使用异或操作可以在不使用临时变量的情况下交换两变量的值。
异或操作符:^。
对于位操作:0^0=0, 1 ^ 1 = 0, 0 ^ 1 = 1 ^ 0 = 1。
对于一个变量a:a ^ a = 0; a ^ 0 = a。
#include
void swap(int &a, int &b)
{
a = a ^ b; // a' = a ^ b
b = a ^ b; // b' = a' ^ b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a
a = a ^ b; // a = a' ^ b' = (a ^ b) ^ a = (a ^ a) ^ b = 0 ^ b = b;
}
int main(int argc, char *argv[])
{
int a = 5, b = 3;
printf("a = %d\n", a);
printf("b = %d\n", b);
swap(a, b);
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
C++