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

Pep*_*791 9 c

我发现以下代码添加了两个数字而不使用+运算符.

代码添加3和4:

printf("%d",printf("%*c%*c",3,' ',4,' '));
Run Code Online (Sandbox Code Playgroud)

现在printf()返回结果中的字符数,并%*c忽略它遇到的下一个字符.但是,我仍然无法理解这段代码.任何帮助,将不胜感激.

Pet*_*der 9

printf("%*c", n, c)打印字符c,n时间.因此代码打印3个空格后跟4个空格,并printf返回打印的字符数,显然是3 + 4,完成了问题.

  • 实际上它在字段宽度为"n"的情况下打印字符"c"右对齐,用空格填充.(没有用'c`的副本填充,如你的答案所示) (2认同)

Bas*_*tch 5

内部printf输出3然后4个空格并返回字符数,即7,外部printf打印结果.