C语言中的MAXINT溢出

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相同,那就没有用了。为什么不直接使用该语言提供的(完全可移植的)功能以及代码读者

定义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相同,那就没有用了。为什么不直接使用该语言提供的(完全可移植的)功能以及代码读者所期望的功能呢?(如果我看到
INT\u MAX
,我知道它是什么,如果我看到
MAXINT
,我必须寻找定义。)作为一种(在国际海事组织中更容易理解的)替代方法,
(1u
const int MAXINT = ((1 << (8*sizeof(int)-2))-1)*2 + 1
const int MAXINT = INT_MAX;