不允许创建临时变量,求两个数的内容?
异或满足加法交换律
x ^= y; // x = x ^ y
y ^= x; // y = y ^ x ——> y = y ^ ( x ^ y) ——> y = x; 此时 x = x ^ y , y = x
x ^= y; // x = x ^ y ——> x = ( x ^ y ) ^ ( y ^ ( x ^ y) ) = x ^ y ^ x^ = y
#include <stdio.h>
#include <windows.h >
int main( )
{
int x = 100;
int y = 200;
x ^= y; // x = x ^ y
y ^= x; // y = y ^ x ——> y = y ^ ( x ^ y) ——> y = x;
x ^= y; // x = x ^ y ——> x = ( x ^ y ) ^ ( y ^ ( x ^ y) ) = x ^ y ^ x^ = y
printf("%d %d", x , y );
system("pause");
return 0;
}