[英]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 个字符( \n
、 1
、 0
、 0
、 0
)并返回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() 函数:
首先,内部 printf() 将执行并打印1000
,然后外部 printf() 将执行。
需要注意的是, printf()
返回它打印的字符数,并且转义序列在 printf() 中被计为一个字符。
因此,通过执行内部 printf(),我们得到了 5(因为 '\n', 1, 0,0,0 是 5 个字符),现在,当执行外部 printf() 时,会打印 5。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.