gpt4 book ai didi

c - C 中的 MAXINT 溢出

转载 作者:行者123 更新时间:2023-12-02 09:36:16 25 4
gpt4 key购买 nike

定义最大整数变量时出现错误:

overflow in expression; result is 2147483647 with type 'int' [-Winteger-overflow]

代码中的行:

const int MAXINT = (1 << (8*sizeof(int)-1))-1;

使用语言:Ccpu:64位(代码可能在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;

关于c - C 中的 MAXINT 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25979057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com