gpt4 book ai didi

c - 在简单的阶乘代码中收到奇怪的数学错误,不知道为什么

转载 作者:行者123 更新时间:2023-11-30 20:13:40 25 4
gpt4 key购买 nike

我在这里制作一个简单的因子程序,由于某种原因,它在这里给了我非常奇怪的答案..

我不知道我是否在这里做错了什么。有人可以解释一下这个错误以及为什么会发生吗?

示例:当我输入 5 时,它返回 -1899959296

#include <stdio.h>


void factor(int total);

int main (){

printf("enter a number \n");

int val;
scanf("%i", &val);


factor(val);


}

void factor (int total){

for (int count = 1; count<=total; count++ ){
total = total * count;
}

printf("%d", total);

}

最佳答案

您使用相同的变量来计算计算和条件,这会导致整数溢出。

for (int count = 1; count<=total; count++ ){
total = total * count;
}

您正在使用总计检查条件,在循环中您正在递增该总计。这就是原因。

为此使用另一个变量。

 int output=total;

然后让条件像这样,

 output=output*count;

并打印 printf("%d\n",output);

关于c - 在简单的阶乘代码中收到奇怪的数学错误,不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29294620/

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