我在GNU的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;
}
Run Code Online (Sandbox Code Playgroud)
当我取消注释注释行时,代码不会编译并给出错误:
错误:对于long类型,整数常量太大
但是,如果代码按原样编译并执行,则会产生远大于10000000000的值.
为什么?
我正在使用Dev C++
不稳定的线是......
long long n=600851475143;
Run Code Online (Sandbox Code Playgroud)
错误描述:
integer constant is too long for "long" type
Run Code Online (Sandbox Code Playgroud)
我需要帮助处理大数字.