C语言中的MAXINT溢出
定义max integer变量时,我遇到一个错误:C语言中的MAXINT溢出,c,C,定义max integer变量时,我遇到一个错误: 表达式溢出;结果是2147483647,类型为“int”[-Winteger overflow] 代码中的第行: const int MAXINT=(1此处可能发生溢出 (1 << (8*sizeof(int)-1)) 在1C中使用1L而不是1有一个内置的INT\u MAX常量。你可以从@fuzzxl中使用INT\u MAX,如果long的大小与INT相同,那就没有用了。为什么不直接使用该语言提供的(完全可移植的)功能以及代码读者
表达式溢出;结果是2147483647,类型为“int”[-Winteger overflow]
代码中的第行:
const int MAXINT=(1此处可能发生溢出
(1 << (8*sizeof(int)-1))
在1C中使用1L
而不是1
有一个内置的INT\u MAX
常量。你可以从
@fuzzxl中使用INT\u MAX
,如果long的大小与INT相同,那就没有用了。为什么不直接使用该语言提供的(完全可移植的)功能以及代码读者所期望的功能呢?(如果我看到INT\u MAX
,我知道它是什么,如果我看到MAXINT
,我必须寻找定义。)作为一种(在国际海事组织中更容易理解的)替代方法,(1u
const int MAXINT = ((1 << (8*sizeof(int)-2))-1)*2 + 1
const int MAXINT = INT_MAX;