12

认为

  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]

为什么它会溢出,我错过了什么?

4

1 回答 1

20

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

如果您添加LL到其中之一,它将促进它们全部。

于 2013-04-12T00:05:59.930 回答