先上代码:
int add(int left, int right) { return printf("%*s%*s", left, " ", right, " "); }
这种奇葩的题目很有可能出现在面试中,不同于曾经出现过的不用+、-、*、/操作符来实现两数的四则运算,这一题是通过printf函数的返回值来求得两个数相加的值。
printf的返回值为其输出的字符个数,printf("%*s%*s", left, " ", right, " "),
其中“%*s”中的*表示对齐的大小不确定,通过后面对应字符前的参数传过来
即printf("%*s%*s", left, " ", right, " ")含义为打印left个空格和right个空格,返回值则为left+right
PS:printf还有一种形式
printf(“%*s”,4,”*”); 表示输出“___*”,前面输出3个空格。
printf(“%*s”,4,“**”); 表示输出“__**”,前面输出2个空格。