1

('+' /'++')を使わずに2つの数字を足す方法を探していて、 リンクをたどりました。しかし、私はこの解決策も見つけました:

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

誰かがadd関数で何が起こっているのか説明できますか?

4

2 に答える 2

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

形式の*printf、文字を出力するために使用されるフィールド幅がprintf、この場合はxとの引数から取得されることを意味しyます。の戻り値printfは、印刷された文字数です。したがって、' 'フィールドxyx + y

于 2012-10-06T11:11:57.700 に答える
1

さて、これは何が起こるかです: *beforeはそれをc伝えますprintf:

幅はフォーマット文字列では指定されませんが、フォーマットする必要がある引数の前に追加の整数値引数として指定されます。

したがって、これは、最初の空白文字が の幅で印刷されa、2 番目の空白文字が の幅で印刷されることを意味しbます。同時に、printf実際には文字である、印刷された文字数を返しますa + b

于 2012-10-06T11:12:41.923 に答える