1

我正在寻找如何在不使用 ('+'/'++') 的情况下添加两个数字并通过 链接。但是,我也找到了这个解决方案:

#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;
}

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

4

2 回答 2

2
return printf("%*c%*c",  x, ' ',  y, ' ');

*格式中的表示printf用于打印字符的字段宽度取自printf, 在这种情况下x和的参数y。的返回值printf是打印的字符数。所以它打印一个' '字段宽度为 的x,一个字段宽度为 的yx + y总共生成字符。

于 2012-10-06T11:11:57.700 回答
1

那么会发生什么:*前面c告诉printf我们:

宽度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。

因此,这意味着第一个空格字符的宽度为a,第二个空格字符的宽度为b。同时printf返回打印的字符数,实际上是a + b字符。

于 2012-10-06T11:12:41.923 回答