当我用printf %*c%*c的printf,它需要4个值,并打印出的4和5的总和我找不到这个正当的理由.
在研究时,我发现它%*c表示宽度.但是什么是宽度以及如何得出以下示例的总和?
printf("%*c%*c", 4, ' ', 5, ' ');
Run Code Online (Sandbox Code Playgroud)
代码:
#include <stdio.h>
int add(int x, int y)
{
return printf("%*c%*c",x,' ', y,' ');
}
int main()
{
printf("%d",add(4,5));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
printf 返回打印的字符数.
printf("%*c", N, C);打印N-1空白后跟字符C.
更一般地说,printf打印N - length_of_text空白(如果该数字是> 0,否则为零空白),然后是文本.这同样适用于数字.
因此
return printf("%*c%*c", x, ' ', y, ' ');
Run Code Online (Sandbox Code Playgroud)
打印一个以x减去length_of_space其他空格(x-1)为前缀的空格,然后执行相同的操作y.4+5在你的情况下,这会产生空间.然后printf返回打印的字符总数,9.
printf("%d",add(4,5));
Run Code Online (Sandbox Code Playgroud)
这将printf打印add()函数返回的整数9.
默认情况下,printf是右对齐(文本前的空白).要使它左对齐,要么
N,或者-在*例如%-*s或之前添加一个%-12s,%-6dprintf("%*c%*c", 4, ' ', 5, ' '); 在大小为4的字段中打印一个空格,然后在大小为5的字段中打印一个空格.总共有9个字符.
在您发布的代码中,函数返回的结果printf给出了打印字符的数量,因此9.在main中,然后打印此数字9.