计算指定范围内素数之和的C程序输出异常原因咨询
错误原因
- 核心问题是
main函数中的局部变量sum未初始化。C语言中未手动初始化的局部自动变量会保留栈内存中的残留垃圾值,你得到的异常输出32781就是随机垃圾值加上正确的素数和17之后的结果。 - 额外非致命问题:
isprime函数中return false后的break属于无效死代码,return执行后会直接退出函数,这行代码永远不会被执行,不过不影响运行结果。
修复方案
将main函数中的int sum;修改为int sum = 0;,重新编译运行即可得到正确输出17。
内容的提问来源于stack exchange,提问作者Kevincheong
相关产品推荐
相关产品推荐

