在C中返回printf()函数的值

printf()函数将返回打印的字符数。 但是在下面的代码中为什么要打印5。

 int a=1000; printf("%d",printf("\n%d",a)); 

它打印“1000”一次和一个空格,所以总共我们有2个字符。

它应该输出“1000 2”。 但它的输出“1000 5”。

输出的字符数为5. 1000是四个字符。 \n是一个字符。

printf不会返回“items”输出的数量,就像scanf函数系列的输入一样。 它返回实际的字符数。

内部调用首先发生,打印5个字符( \n0 )并返回5

然后发生外部调用,并打印内部调用返回的5

假设表达式:

 int a=10; printf("a=%d",printf("b=%d",a)); 

产量

 b=10 a=4; 

b因为分配给b的值

 b=10; 

 b,=,1,0 

算作四并分配给a ie:

 a=4; 

你应该清楚地注意到1000是4个字母,而你自己就是一个字符

让我们首先检查内部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()返回实际的字符数 ,这里我们有4 (“1000”) + 1 (“\ n”)字符,所以它将给出输出1000然后5,这是内部printf函数的字符数,它看起来像10005

数字1000由四个数字组成,因此打印它需要四个字符。 四个字符加上换行符是五个字符。

printf("%d",printf("\n%d",a)); printf("\n%d",a)将打印换行符'\n'和整数值1000 ,总共5字符。 首先调用第一个内部printf ,它打印换行符和1000,然后返回值5由外部printf打印。

Printf返回函数成功打印的字符数。

在此处输入图像描述

正如您在图像中看到的那样,首先是最后一个printf显示它应该显示的内容,即3223433 1233。 现在,最后一个printf返回它显示的字符串/ int中的字符数。 然后,第二个最后一个printf显示12,它是最后一个printf显示的内容的长度,即3223433 1233.第三个最后一个printf现在显示2,即12的长度。因为,12的长度是2,接下来显示然后,因为长度2是1,所以显示1,最后再显示1,因为它的长度为1。

只是为了增加一点, printf()返回的字符数可能取决于参数的说明符

例如:

 int a= 0xff; printf(" : %i characters\n" ,printf("%x",a)); //prints ff : 2 characters printf(" : %i characters\n" ,printf("%d",a)); //prints 255 : 3 characters 
 int a=1000; printf("%d",printf("\n%d",a)); 

此代码片段中有2个printf()函数:

  1. 内部printf()
  2. 外部printf()

首先,内部printf()将执行并将打印1000 ,然后外部printf()将执行。

需要注意的是, printf()返回它打印的字符数, 转义序列被计为 printf()中的字符

因此,通过执行内部printf(),我们得到5(因为’\ n’,1,0,0,0是5个字符),现在,当执行外部printf()时,打印5。

printf()返回总数。 在控制台上打印的字符,你传递1000; 所以第一个内部printf()函数将工作并打印1000,这里没有。 性格是4.一个是\ n。

总共没有。 字符变为5,这就是为什么它打印1000 5。