【发布时间】:2018-01-01 13:22:18
【问题描述】:
我最近了解到 printf() 返回它被调用打印的字符数。但我想知道我以前从未“使用”过这个返回值,比如:
int c = printf("Called func\n");
或
printf("%d", printf("Called func\n"));
我只是写了执行 printf 功能的语句,例如:
printf("Called func\n");
那么 printf() 的返回值发生了什么?编译器如何知道它“可以”不使用返回的整数?
【问题讨论】:
-
“编译器如何知道它的“ok”不使用返回的整数?”你通过编码
printf( ...);告诉它。 -
@alk 为什么编译器不抛出错误,因为我“错误地”调用了函数?
-
从形式语言的角度来看,调用一个函数并忽略它“返回”的值并没有错,它评估为。请参阅下面的Basile's answer。
-
任何简单的表达式都是有效的语句。调用具有返回值的函数是一个表达式。就像写
5;或(strcmp);一样,编译器可能会发出一些关于没有副作用或类似的表达式的警告,但忽略任何表达式是完全可以的。
标签: c