尝试在32位计算机上的C ++中打印long
。我得到了意外的输出。
从此代码:
long n = 5330111323L;
printf("n = %ld\n", n);
printf("can print? %s\n", LONG_MAX < 5330111323L ? "yes" : "NO");
printf("LONG_MAX = %ld\n", LONG_MAX);
我得到这个:
C#输出很好。
这个:
long n = 5330111323L;
Console.WriteLine(n);
打印:
5330111323
两者都使用32位编译器。为什么我得到此C ++输出?
最佳答案
条件有误,应该是:LONG_MAX > 5330111323L ? "yes" : "NO"
如果n
低于LONG_MAX
,则可以(正确)打印n
,因为在所有情况下,如果LONG_MAX
被声明为n
,则long
将低于或等于>=
。
编辑:请注意,您也可以使用