不使用任何运算算术符,完成俩个相同类型的整数的相加;
#include <stdio.h>
int add(int a, int b)
{
if (b == 0)
return a;
return add(a^b, (a&b) << 1);
}
int main()
{
int a = -45;
int b = 20;
int num = add(a, b);
printf("%d", num);
return 0;
}
& :按位与,可以取出俩个数都为一的位 进位的部分
^ : 按位异或,可取出俩个数不同的位 不进位的部分
代码不严谨,实用范围相同或不同类型的不太大的数相加。