定义最大整数变量时,我得到一个错误:
overflow in expression; result is 2147483647 with type 'int' [-Winteger-overflow]
代码中的行:
const int MAXINT = (1 << (8*sizeof(int)-1))-1;
使用语言:C cpu:64bit(代码可能用32位机器编写)
拜托,该怎么办?
此处可能发生溢出
(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;