long long是8个字节,但是我得到整数溢出?

时间:2013-04-12 00:04:43

标签: c gcc integer

假设

  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]

为什么会溢出,我缺少什么?

1 个答案:

答案 0 :(得分:19)

因为右侧的数字是int类型,而不是long long,所以在表达式中执行int算术运算,导致溢出。

如果您向其中一个添加LL,则会全部宣传它们。