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

11u*_*896 1 c c# java

我可以做第三个变量

c=a|b;
a=c&a;
b=c&a;
Run Code Online (Sandbox Code Playgroud)

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

No *_*ame 9

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

a = a^b;
b = a^b;
a = a^b;
Run Code Online (Sandbox Code Playgroud)


Isa*_*aac 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
Run Code Online (Sandbox Code Playgroud)