题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
1.利用sizeof(),但是注意,对于非数组类型,sizeof()返回的是函数指针的值。
2.利用异或运算,但是注意,进位要考虑,还有,负数的情况,相减的情况都要考率。
class Solution {
public:
int Add(int num1, int num2)
{
int a[num1]; //但是不能写成int *a=new int[num1],这个sizeof(a)不是数组的大小,而是指针的大小4.
int b[num2];
return (sizeof(a)+sizeof(b))/sizeof(int);
}
};
class Solution {
public:
int Add(int num1, int num2)
{
do
{
int sum=num1^num2;
int carry=(num1&num2)<<1;
num1=sum;
num2=carry;
}while(num2!=0);//这个法则对负数也有用,所以不能写while(num2>0)
return num1;
}
};