先上代码:

 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个空格。