假设
long long b = 5*1024*1024*1024; // 5 gigs, small enough for 64 bits
printf ("%lu\n",sizeof(long long)); // prints 8 (bytes) = 64 bits
但是编译器抱怨:
warning: integer overflow in expression [-Woverflow]
为什么会溢出,我缺少什么?
答案 0 :(得分:19)
因为右侧的数字是int
类型,而不是long long
,所以在表达式中执行int
算术运算,导致溢出。
如果您向其中一个添加LL
,则会全部宣传它们。