Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 对printf的嵌套调用 #包括 void main() { printf(“%d”,printf(“%d”,printf(“Hello world!\n”)); }_C_Printf - Fatal编程技术网

C 对printf的嵌套调用 #包括 void main() { printf(“%d”,printf(“%d”,printf(“Hello world!\n”)); }

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

为什么它的输出为132?hello world的长度为13个单位。

如果将语句拆分为多个语句,您可以更清楚地看到发生了什么:

#include <stdio.h>
void main()
{
   printf("%d", printf("%d",printf("Hello world!\n")));
}
第一个
printf
prints
Hello 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