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
相关产品推荐
相关产品推荐

