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

C语言调用cmp函数获返回值但终端无输出问题咨询

问题根源

终端没有任何输出和cmp函数的返回逻辑无关,是两个基础语法点没注意到导致的:

  • 第一,C语言的函数返回值不会自动输出到终端。你调用cmp(10,20)时函数确实正确返回了20,但你既没有用变量接收这个返回值,也没有调用输出函数打印这个值,这个返回值直接被丢弃了,自然不会显示在终端上。
  • 第二,printf的输出默认遵循行缓冲规则:存在标准输出缓冲区的内容,只有遇到换行符\n、缓冲区满、手动调用刷新函数、或者程序正常退出时才会被推送到终端显示。你写的printf("testing...");字符串末尾没有加换行符,在部分运行环境下,程序退出时的缓冲区刷新逻辑不会处理这种不带换行的残留内容,就会导致这行字也没显示出来。
修正后的代码参考

只需要调整main函数里的逻辑,补全返回值打印、给printf字符串加上换行即可:

int main()
{
    int max_val = cmp(10, 20);
    printf("cmp函数返回值:%d\n", max_val);
    printf("testing...\n");

    return 0;
}

运行后终端会正常输出:

cmp函数返回值:20
testing...
补充提示

如果确实不想在字符串末尾加换行,也可以在printf语句后加一句fflush(stdout);手动强制刷新标准输出缓冲区,内容也会立即显示。你写的cmp比较逻辑本身没有问题,传入10和20确实会返回20,只是之前的代码没有做输出操作、也没触发缓冲区刷新,才看不到任何内容。

内容的提问来源于stack exchange,提问作者Katelyn Chenelle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:45:43