C 对printf的嵌套调用 #包括 void main() { printf(“%d”,printf(“%d”,printf(“Hello world!\n”)); }
为什么它的输出为132?hello world的长度为13个单位。如果将语句拆分为多个语句,您可以更清楚地看到发生了什么:C 对printf的嵌套调用 #包括 void main() { printf(“%d”,printf(“%d”,printf(“Hello world!\n”)); },c,printf,C,Printf,为什么它的输出为132?hello world的长度为13个单位。如果将语句拆分为多个语句,您可以更清楚地看到发生了什么: #include <stdio.h> void main() { printf("%d", printf("%d",printf("Hello world!\n"))); } 第一个printfprintsHello world\n。因为这是13个字符,所以它返回13 第二个printf打印13。因为这是2个字符,所以它返回2 第三个printf打印2
#include <stdio.h>
void main()
{
printf("%d", printf("%d",printf("Hello world!\n")));
}
第一个printf
printsHello world\n
。因为这是13个字符,所以它返回13
第二个printf
打印13
。因为这是2个字符,所以它返回2
第三个printf
打印2
因此,完整输出将为:
int temp1 = printf("Hello world!\n");
int temp2 = printf("%d", temp1);
printf("%d", temp2);
如果您添加了更多的新行,情况会更加明显:
Hello world!
132
将打印:
printf("%d\n", printf("%d\n",printf("Hello world!\n")));
打开
man 3 printf
并检查返回的内容
成功返回后,这些函数返回
打印字符(不包括空字符)
用于将输出结束为字符串的字节)
在您的情况下,
printf(“Hello world!\n”)
1st它会打印Hello world
然后返回可打印字符的编号,该编号为13
,然后再次将2
打印为13
具有2
字符 请使用正确的标题,不要将代码放在标题中。对不起,我是新来的..我正在更改标题正确的标题。。。“无法理解C代码”太普通了。您正在将字符打印为整数。你希望它打印什么?字符串的长度?@Matt实际上,它根本不打印字符。它确实会打印printf()
函数的返回值。谢谢,我已经知道了。我以为是一百三十二。如果在数字后面加空格或换行符,就不会那么混乱了。事实上,它是在返回Hello world!13 3是为了新的一行吗?@DhrubaGoswami Yep,你现在已经掌握了窍门:)我想最后2行在这里只是一个拼写错误。@Lundin不是一个拼写错误,只是忘记了更改会产生副作用,我实际上还没有试过。
Hello world!
13
3