//方法一
int main()
{
int a = 3;
int b = 5;
a = a + b;
b = a - b;
a = a - b;
printf("%d %d",a,b);
return 0;
}
虽然这种方法可行,但存在问题,当a,b过大,但没超过整型大小时,就会计算错误
下面我们利用按位异与解决
//方法二
int main()
{
int a = 3;
int b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d",a,b)
return 0;
}
这里面的逻辑是因为
a =a^b
所以
b=a^b^b 我们知道两个相同的数进行^操作结果为0,任何数与0进行^操作,结果仍为原数,所以在此的操作相当于把a赋值给了b
同理a=a^b也就得到了解释。