在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个字符( \n
, 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 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()函数:
- 内部printf()
- 外部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。