gpt4 book ai didi

c - 为什么相同的输入(0)我的输出会增加?

转载 作者:行者123 更新时间:2023-11-30 19:28:15 26 4
gpt4 key购买 nike

我编写了一个程序来对任何给定数字中的所有整数进行求和,但是当我使用零作为数字时,我会得到一个巨大的负数,随着我继续运行程序,该负数会增加......例如,对于 scanf 函数,给出 123程序应该返回 6。

当我为 scanf 函数输入 0 时,我得到 -402438064,然后我用 0 再次运行程序并得到 -294000560。有什么解释为什么它会这样工作吗?

#include <stdio.h>

int main(void) {
int num, lnum, last_result;
printf("ENTER A NUMBER:\n");
scanf("%i", &num);

do {
lnum = num % 10;
num /= 10;
last_result += lnum;
}
while (num != 0);
printf("%i\n", last_result);
return 0;
}

最佳答案

正如评论中所解释的,last_result 未初始化。需要明确的是,如果您不手动将其设置为 0,则该值可以是任何值,并且将其添加到 last_result 是未定义的,因为标准不坚持声明的变量是 0 初始化的。

#include <stdio.h>

int main(void) {
int num, lnum;
int last_result = 0; // 0-initialized on a new line to make it clear.
printf("ENTER A NUMBER:\n");
scanf("%i", &num);

do {
lnum = num % 10;
num /= 10;
last_result += lnum;
} while (num != 0);
printf("%i\n", last_result);
return 0;
}

关于c - 为什么相同的输入(0)我的输出会增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374140/

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