添加两个数字而不使用运算符

时间:2012-10-06 11:05:40

标签: c printf addition

我正在寻找如何在不使用('+'/'++')的情况下添加两个数字并完成 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;
}

有人可以解释添加功能中发生了什么吗?

2 个答案:

答案 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个字符。