繁体   English   中英

C 中 printf() function 的返回值

[英]Return value of printf() function in C

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

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

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

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

output 的字符数为1000为四个字符。 \n是一个字符。

printf不会像scanf系列函数一样返回“项目”的数量 output 用于输入。 它返回实际的字符数。

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

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

假设表达式:

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

output

b=10 a=4;

b因为赋值给 b ie

b=10;

b,=,1,0   

计为四并分配给 a 即:

a=4;

让我们首先检查内部 printf 的 output:

/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”)字符,因此它将给出output 1000,然后是5个角色计数,是Inner ZAFA0FF8B27B27666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666abde像10005

您应该清楚地注意到1000是 4 个字母,并且您有\n它本身就是一个字符

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

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

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

printf() 返回总数。 在控制台上打印的字符,您通过 1000; 所以第一个内部 printf() function 将工作并打印 1000,这里没有。 字符数是 4。一个是 \n。

所以总没有。 字符变为 5,这就是它打印 1000 5 的原因。

在此处输入图像描述

正如您在图像中看到的,首先最后一个 printf 显示它应该显示的内容,即 3223433 1233。现在,最后一个 printf 返回它显示的字符串/int 中的字符数。 Then, the second last printf displays 12 which is the length of the whatever is displayed by last printf ie 3223433 1233. The third last printf now displays 2 which is the length of 12. Since, length of 12 is 2, it is displayed next然后由于 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM