C语言函数内print输出hypo正确,外部获取返回值却为0的原因
问题原因及解决方法
核心问题
你在main函数中声明的hypo变量没有接收pythagorean函数的返回值,且该变量未初始化,它的初始值是内存中的随机垃圾值(显示为0只是偶然情况)。
看你代码里的这一行:
pythagorean(a, b);
这里虽然调用了计算斜边的函数,但没有把函数返回的结果赋值给main里的hypo变量,导致后续printf打印的是未初始化的垃圾值,而非函数计算出的正确结果。
解决方法
修改函数调用的代码,将返回值赋值给main中的hypo:
hypo = pythagorean(a, b);
修改后,main里的hypo就会被赋予函数计算出的斜边值,后续的printf就能正确输出结果了。
额外说明
C语言中,局部变量如果没有显式初始化,会包含未定义的垃圾值,使用这类变量会触发未定义行为,输出结果完全不可预测(这次显示0只是巧合),所以一定要确保变量在使用前被正确初始化或赋值。
内容的提问来源于stack exchange,提问作者PapaPumpkin
相关产品推荐
相关产品推荐

