long long是8个字节,但是我得到整数溢出?
假设
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]
为什么会溢出,我错过了什么?
因为右侧的数字是int
类型,而不是long long
,所以在表达式中执行int
算术,导致溢出。
如果你向其中一个添加LL
,它将全部提升它们。