对于带有返回值的函数,当我们调用它时,为什么它不会像我们调用void函数那样出错? 例如,printf函数用于输出。但我们在这里看到,printf函数有一个返回值。
int printf(const char* format, ...) // printf function
#include<string.h>
int main(){
printf("Hello");
return 0;
}
为什么当我们在函数中有一个返回值时,我们可以调用函数而不指定保存返回值的内容?返回值会发生什么?
答案 0 :(得分:4)
返回值会发生什么?
它被丢弃,被忽略。
为什么当我们在函数中有一个返回值时,我们可以调用函数而不指定保存返回值的内容?
因为那是语言设计者认为合适的。对你来说似乎很愚蠢,但返回值并不总能保证有用。在printf
的情况下,该值表示写入的字符数。我们可能会关心它以发现任何错误。但是,如果我们将任何打印作为错误处理本身的一部分,那么这个价值有多大?我们现在会变得更难失败吗?
我们应该能够在不引入未使用的变量的情况下忽略它。
如果您希望编译器警告您忽略该值,大多数编译都会转换为该效果。例如,GCC的-Wunused-result
。
在这种情况下,您可以通过将结果转换为void
来明确丢弃。有人说它更好地表达了意图,但YMMV。