使用按位运算符交换两个变量而不使用c中的第三个变量

时间:2013-07-24 14:09:14

标签: java c# c

我可以使用第三个变量

c=a|b;
a=c&a;
b=c&a;

但我需要在没有第三变量的情况下这样做。我尝试使用XOR也没有帮助我。

2 个答案:

答案 0 :(得分:9)

这是一个简单的第一年编程课题:

a = a^b;
b = a^b;
a = a^b;

答案 1 :(得分:6)

XOR有一个属性,XORing东西两次总会带你回到你开始的地方。您可以使用此事实在三个分配中切换变量而不使用第三个变量。

int a = 54;
int b = 23;

a = a XOR b; // (a XOR b)
b = a XOR b; // (a XOR b) XOR b = a
a = a XOR b; // (a XOR b) XOR a = b