a = a ^ b ;
b = a ^ b ;
a = a ^ b ;
这段代码是一个常见的技巧,用于交换两个整数变量a和b的值,而不使用临时变量。这里使用了异或运算符(^),它会对两个整数的每一位执行异或操作。异或操作的定义是:相同为0,不同为1。
a = a ^ b;
这一行执行了a和b的异或操作,并将结果存储在a中。此时,a的值变成了a和b异或后的结果,而b的值保持不变。
b = a ^ b;
在这一行中,我们再次执行异或操作,但此时a的值已经改变。因此,这一行的操作实际上是b = (a ^ b) ^ b。由于异或操作是可逆的(即a ^ b ^ b = a),所以b现在存储了原来a的值。
a = a ^ b;
最后,我们再次执行异或操作。此时,b包含原来a的值,而a包含a和b异或后的结果。因此,a = (a ^ b) ^ (原来的a值)。由于异或操作是可逆的,a现在存储了原来b的值。
通过这三步操作,我们成功地交换了a和b的值,而没有使用任何额外的变量。