假设
long long b = 5*1024*1024*1024; // 5 gigs, small enough for 64 bits
printf ("%lun",sizeof(long long)); // prints 8 (bytes) = 64 bits
但编译器抱怨道:
warning: integer overflow in expression [-Woverflow]
为什么它会溢出,我错过了什么?
因为右边的数字的类型是int
,而不是long long
,所以在表达式中执行int
运算,导致溢出。
如果您将LL
添加到其中一个,它将促进所有这些功能。