我在GNU公司的C尝试这种代码++编译器,但无法了解其行为:长长的C/C++
#include <stdio.h>;
int main()
{
int num1 = 1000000000;
long num2 = 1000000000;
long long num3;
//num3 = 100000000000;
long long num4 = ~0;
printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
printf("%d %ld %lld %llu", num1, num2, num3, num4);
return 0;
}
当我去掉了注释行,代码不编译,并给人一种错误:
error: integer constant is too large for long type
但是,如果代码被编译,因为它是和被执行,它会产生比10000000000.
为什么更大的价值?
现在可能已经太晚了,但对于未来的读者,我建议你使用''并使用'uint64_t'。要显示一个64位的值,'printf(“%PRIu64”\ n“,val);' –
enthusiasticgeek
2012-08-13 15:36:17