#include <stdio.h>
void main()
{
printf("%d", printf("%d",printf("Hello world!\n")));
}
为什么输出为132?你好世界是13个单位。
答案 0 :(得分:4)
如果将陈述分成几个陈述,您可能会更清楚地看到发生的事情:
int temp1 = printf("Hello world!\n");
int temp2 = printf("%d", temp1);
printf("%d", temp2);
第一个printf
打印Hello world!\n
。由于这是13个字符,因此返回13
。
第二个printf
打印13
。由于这是2个字符,因此返回2
。
第三个printf
打印2
。
所以完整输出将是:
Hello world!
132
如果您添加更多换行符,那将会更加明显:
printf("%d\n", printf("%d\n",printf("Hello world!\n")));
会打印:
Hello world!
13
3
答案 1 :(得分:2)
打开man 3 printf
并检查它返回的内容
成功返回后,这些函数返回的数量 打印的字符(不包括空格 用于结束输出到字符串的字节。)
在您的情况下printf("Hello world!\n")
第一次打印Hello world!
,然后返回“13
的可打印字符”,并再次打印2
13
2
{ {1}} char。