gpt4 book ai didi

c - INT_MAX 在 If 语句中的行为不正确

转载 作者:太空宇宙 更新时间:2023-11-04 05:17:31 26 4
gpt4 key购买 nike

我的 C 程序执行“Turmrechnung”(预定义的数字(“init_num”乘以预定义的数字范围(init_num*2*3*4*5*6*7*8*9 在我的例子中,由变量“h”定义),然后除以那些相同的数字,结果应该是“init_num”的初始值。我的任务是集成一种方法,如果 init_num 的值变大,则停止计算比 INT_MAX(来自 limits.h)。但是 If 语句始终为真,即使它不是,如果“init_num”的初始值较大,这会导致在计算过程中值大于 INT_MAX。

只有在我的 If 语句中将“INT_MAX”替换为比 INT_MAX 更小的数字(如 200000000)时它才有效。为什么?

#include <limits.h>
#include <stdio.h>

int main() {
int init_num = 1000000;
int h = 9;

for (int i = 2; i < h+1; ++i)
{
if (init_num * i < INT_MAX)
{
printf("%10i %s %i\n", init_num, "*", i);
init_num *= i;
}
else
{
printf("%s\n","An overflow has occurred!");
break;
}
}
for (int i = 2; i < h+1; ++i)
{
printf("%10i %s %i\n", init_num, ":", i);
init_num /= i;
}
printf("%10i\n", init_num);


}

最佳答案

if (init_num * i < INT_MAX)

INT_MAXint 的最大值,因此,此条件永远不会为 false 或换句话说 0(除非它等于 INT_MAX)。

如果你愿意你可以这样写你的条件-

if (init_num < INT_MAX/i)

关于c - INT_MAX 在 If 语句中的行为不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525244/

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