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

C代码输出垃圾值问题分析:为何main函数打印加法返回值异常

问题分析与修复

咱们直接揪出代码里的关键错误:在main函数的最后一行,你写了printf("\nsum=%d",sum);——这里的sum是你定义的函数名,不是函数调用的返回值!

为啥会输出那个奇怪的“垃圾值”?

在C语言里,函数名本身代表的是这个函数在内存中的入口地址(本质是个函数指针)。你用%d格式符去打印这个地址时,相当于把指针的数值当成整数输出了,所以你看到的4195760根本不是加法结果,只是sum函数在内存里的位置编号而已。

额外小提示(非错误,但可以优化)

你的sum函数内部已经打印了add的值,如果你的需求是在main里获取返回值再打印,这个内部打印可以根据需要保留或者删掉,不影响功能,只是输出内容多少的区别。

修正后的代码示例

要正确拿到加法的返回值,你需要调用函数(也就是加个括号传参数),而不是直接写函数名。两种写法都可以:

#include <stdio.h>
int sum(int x,int y) {
    int add = x + y; // 可以直接初始化,更简洁
    printf("\nadd=%d", add);
    return add;
}
int main() {
    int a = 1, b = 2;
    
    // 写法1:直接在printf里调用函数获取返回值
    printf("\nsum=%d", sum(a, b));
    
    // 写法2:先把返回值存到变量里,再打印(更清晰,适合需要多次使用结果的场景)
    // int total = sum(a, b);
    // printf("\nsum=%d", total);
    
    return 0;
}

这样运行后就会输出add=3 sum=3(如果保留sum里的printf),结果完全符合预期啦。

内容的提问来源于stack exchange,提问作者Sushil Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:36:01