我想知道C或C ++编程语言中的printf()
是否在屏幕上返回打印的字符数,那么
printf("%d", 10);
工作?为什么它没有显示任何错误?
应该使用整数变量来捕获返回的值,如下所示:
int var = printf("%d", 10);
printf()
如何在内部解决此问题?
答案 0 :(得分:8)
printf()
在这里没什么特别的。 C并不要求你对你评估的表达式的结果做任何事情。
2 + 3;
是完全有效的陈述。 (它可能会从编译器生成警告,因为它实际上没有做任何事情,与printf()
等函数调用不同。)
让我们看一下你的第二个版本的微小变化:
int var;
var = printf("%d", 10);
在这里你可能会认为我们正在追赶"来自printf
的{{1}}的返回值,因此没有留下任何结果值。但var
只是另一个运算符(如=
或+
),它会返回一个值!
&&
int x, y, z;
x = (y = (z = 42)); // perfectly valid code
x = y = z = 42; // same thing; = is right associative
返回分配的值,此代码将所有三个变量设置为=
。
所以,如果C要求你去捕捉"返回值,你不能使用赋值语句,因为它们也返回一个值。