gpt4 book ai didi

c - 为什么看起来 INT_MIN 和 INT_MAX 超出了 int 类型的范围?

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:29 25 4
gpt4 key购买 nike

当我使用 INT_MAX 和 INT_MIN 常量时,我​​得到 -2147483648 ... 2147483647。

但是当我尝试使用此函数计算整数的最大值和最小值时:

static int computeInt(void)
{
int myInt = 0;
int min = 0;
int max = 32;

for (int i = min; i < max; i++)
{
myInt = myInt + pow(2, i);
}

myInt = myInt / 2;

return myInt;
}

我没有得到相同的号码。我认为发生这种情况的技术原因是 myInt 溢出。

谢谢!

最佳答案

是的,你有一个溢出,因为 int 的范围是从 -2^31 到 2^31 - 1 并且你尝试计算 2 从 0 到 31 的幂和。你的最终值是以下结果: (2^0 + 2^1 + 2^3 + ... + 2^31)/2 明显大于 2^31 - 1

关于c - 为什么看起来 INT_MIN 和 INT_MAX 超出了 int 类型的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15246018/

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