C语言计算数组元素总和时返回异常大负数问题求助
问题根源
你的代码错误和编译器逻辑无关,属于C语言局部自动变量未初始化的典型问题:
- 你在代码中定义的
int sum1, sum2;是main函数内的局部自动变量,C语言标准明确规定这类变量不会被自动初始化为0,创建时的初始值是对应内存地址中残留的随机垃圾值。 - 你观察到"第一个读取的数组求和结果始终正常",只是恰好第一个求和变量对应的内存残留值碰巧是0而已,第二个求和变量对应的内存残留值是负数,累加数组元素后就会出现你遇到的大负数输出。
修复方案
仅需要修改一处代码:将求和变量的定义行修改为带初始化的格式即可:
int sum1 = 0, sum2 = 0;
另外你代码里存在一处小笔误,第二个数组的输入提示打印的是Please input an integer into the first second:,建议修改为Please input an integer into the second list:避免用户困惑。
修改后运行你给出的测试用例,会正确输出sum1=5、sum2=10,比较逻辑也会正常判定第二个数组总和更大。
内容的提问来源于stack exchange,提问作者Stoutishhat90
相关产品推荐
相关产品推荐

