不用任何操作符(包括位运算符)计算两个数的加法

#不用任何操作符(包括位运算符)计算两个数的加法

先上代码:

1
2
3
4
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个空格。