You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么逻辑正确的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:36:02