printf()
函数将返回打印的字符数。但在下面的代码中为什么会打印5呢?
int a=1000;
printf("%d",printf("\n%d",a));
它打印一次"1000"和一个空格,所以总共有5个字符。
它应该输出"1000 2"。但它输出的是"1000 5"。
printf()
函数将返回打印的字符数。但在下面的代码中为什么会打印5呢?
int a=1000;
printf("%d",printf("\n%d",a));
输出的字符数是5个。 1000
是四个字符。 \n
是一个字符。
printf
不像输入函数scanf
系列那样返回"items"(元素)的数量,而是返回实际输出的字符数。
内部调用先发生,打印5个字符(\n
, 1
, 0
, 0
, 0
),并返回5
。
然后发生外部调用,并打印内部调用返回的5
。
int a=10;
printf("a=%d",printf("b=%d",a));
输出
b=10 a=4;
b
是因为给b赋的值
b=10;
b,=,1,0
将四个计算为一个,并分配给a,即:
a=4;
printf()函数返回实际字符数量,而在这里我们有4个("1000")字符和1个("\n")字符,因此它将输出1000,然后是5,这是内部printf函数的字符计数,看起来像10005。
1000
是4个字母,而且你有一个\n
,它本身是一个字符。首先我们来查看内部printf的输出:
/n, 1, 0, 0, 0
1) You have to take escape sequences like '\n','\t' etc into account.
2) You have to take 1 escape sequence as 1 character (not 2)
外部的printf返回内部printf的实际字符计数,即5个字符。因此,外部的printf返回5。
printf("%d",printf("\n%d",a));
中,printf("\n%d",a)
会打印一个换行符 '\n'
和整数值 1000
,总共占用 5
个字符。首先会先调用内部的第一个 printf
打印换行和 1000,然后外部的 printf
会打印返回值 5
。请注意保留 HTML 标签,但不需要写解释。Printf 函数返回成功打印的字符数。
printf() 返回在控制台上打印的字符总数,如果你传入 1000,则第一个内部 printf() 函数将工作并打印 1000,这里的字符数为 4。其中一个是 \n。
因此,总字符数变为 5,这就是为什么它会打印出 1000 5 的原因。