定义最大整数变量时,出现错误:
overflow in expression; result is 2147483647 with type 'int' [-Winteger-overflow]
行:
const int MAXINT = (1 << (8*sizeof(int)-1))-1;
使用的语言:C cpu:64bit(代码可能用32位机器编写)
请问,该怎么办?答案 0 :(得分:5)
此处可能发生溢出
(1 << (8*sizeof(int)-1))
而不是减1(溢出后):
const int MAXINT = ((1 << (8*sizeof(int)-2))-1)*2 + 1
注意:最好使用CHAR_BIT
而不是8
。但那通常会带来INT_MAX
(@Jonathan Leffler)并且代码可以使用(@mafso)
const int MAXINT = INT_MAX;