只需调用该函数,返回值的函数不会出错

时间:2017-12-05 11:42:25

标签: c function return-value

对于带有返回值的函数,当我们调用它时,为什么它不会像我们调用void函数那样出错? 例如,printf函数用于输出。但我们在这里看到,printf函数有一个返回值。

int printf(const char* format, ...) // printf function

#include<string.h>

int main(){
    printf("Hello");
    return 0;
}

为什么当我们在函数中有一个返回值时,我们可以调用函数而不指定保存返回值的内容?返回值会发生什么?

1 个答案:

答案 0 :(得分:4)

  

返回值会发生什么?

它被丢弃,被忽略。

  

为什么当我们在函数中有一个返回值时,我们可以调用函数而不指定保存返回值的内容?

因为那是语言设计者认为合适的。对你来说似乎很愚蠢,但返回值并不总能保证有用。在printf的情况下,该值表示写入的字符数。我们可能会关心它以发现任何错误。但是,如果我们将任何打印作为错误处理本身的一部分,那么这个价值有多大?我们现在会变得更难失败吗?  我们应该能够在不引入未使用的变量的情况下忽略它。

如果您希望编译器警告您忽略该值,大多数编译都会转换为该效果。例如,GCC的-Wunused-result

在这种情况下,您可以通过将结果转换为void来明确丢弃。有人说它更好地表达了意图,但YMMV。