尝试在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# - 意外的输出打印长号-LMLPHP

C#输出很好。

这个:

long n = 5330111323L;
    Console.WriteLine(n);


打印:

5330111323


两者都使用32位编译器。为什么我得到此C ++输出?

最佳答案

条件有误,应该是:

LONG_MAX > 5330111323L ? "yes" : "NO"

如果n低于LONG_MAX,则可以(正确)打印n,因为在所有情况下,如果LONG_MAX被声明为n,则long将低于或等于>=

编辑:请注意,您也可以使用

10-07 19:28