为什么逻辑正确的C语言求三数最大值程序输出0或垃圾值?
C程序输出异常原因分析
- 逻辑分支覆盖不全:你当前的代码仅处理了
a > b的场景,当输入的数值满足a <= b时,外层if判断不成立,包裹的代码块完全不会执行,big变量全程没有被赋值。 - 局部变量未初始化行为:C语言中定义在函数内的非静态局部变量,不会被自动初始化为0,默认会保留栈内存上的随机垃圾值。当你没有对
big赋值就直接读取打印时,属于未定义行为,输出结果可能是0、随机数值等无意义内容。
修复后的参考代码
#include <stdio.h> int main() { int a, b, c, big; printf("Enter three given numbers : "); scanf("%d%d%d", &a, &b, &c); if (a > b) { if (a > c) big = a; else big = c; } else { // 补充a小于等于b时,比较b和c的逻辑 if (b > c) big = b; else big = c; } printf("The largest number is = %d", big); return 0; }
内容的提问来源于stack exchange,提问作者steamsid007
相关产品推荐
相关产品推荐

