unsigned long long num=4102410241024;//得到的结果为num=0,因为这样的整数默认为int类型,在运算阶段4102410241024会发生溢出,结果为0
unsigned long long num=410241024*1024ull;//这样就不会溢出了,int会被提升为unsigned long long类型
下面代码在linux下的运行结果为:
#include <stdio.h>
int main()
{
unsigned long long num=4*1024*1024*1024ull;
printf("%d\n",num);
printf("%llu\n",num);
printf("%d\n",0xFFFFFFFF);
return 0;
}
0
4294967296
-1