输出是什么? 请给出答案并提供有效的解释。
#include<stdio.h>
int main()
{
printf("%d %d", printf("Hello
World"), printf("New World"));
return 0;
}
请解释输出。
您首先应该记住,C 语言几乎没有什么魔力:它最初被设计为盲目服从程序员,但现在仍然主要按照要求执行。
发生了什么:您使用 3 个参数调用
printf
函数:一个字符串 ("%d %d"
) 和 2 个恰好是函数调用的表达式。
因此编译器首先评估函数参数(以未指定的顺序)。每个
printf
函数调用都会执行自己的输出并返回(与任何 printf
调用一样)字符数。您首先看到 Hello world
和 New world
的原因是按照您的特定 C 实现指定的顺序。
然后使用参数
"%d %d"
、9
和 11
调用外部 printf(内部 printf 调用的返回值...)并正常显示 9 11
。
没有魔法...