我正在寻找如何在不使用('+'/'++')的情况下添加两个数字并完成 link。但是,我也找到了这个解决方案:
#include<stdio.h>
int add(int x, int y);
int add(int x, int y)
{
return printf("%*c%*c", x, ' ', y, ' ');
}
int main()
{
printf("Sum = %d", add(3, 4));
return 0;
}
有人可以解释添加功能中发生了什么吗?
答案 0 :(得分:2)
return printf("%*c%*c", x, ' ', y, ' ');
*
格式的printf
表示用于打印字符的字段宽度取自printf
的参数,在本例中为x
和{ {1}}。 y
的返回值是打印的字符数。因此,它打印的一个printf
的字段宽度为' '
,另一个的字段宽度为x
,总共会生成y
个字符。
答案 1 :(得分:1)
这会发生什么:*
c
告诉printf
:{/ p>
宽度未在格式字符串中指定,但作为附加 必须在参数前面的整数值参数 格式化。
因此,这意味着第一个空格字符的打印宽度为a
,第二个空格字符的宽度为b
。同时printf
返回打印的字符数,实际上是a + b
个字符。