设有int型两个变量 a和b,不借助于临时变量可用异或法交换两个变量的值,注意这里的异或为位异或操作;
通过操作
a = a ^ b;
b = b ^ a;
a = a ^ b;
可以实现两个变量值得交换,已知异或操作满足交换律和结合律,a^a=0,0^a=a;故而上述操作解释为:
a = a ^ b (1);
b = b ^ a (2);b=b^a^b=b^b^a=0^a=a
a = a ^ b (3);将右边的a用(1)展开b用(2)展开为a=a^b^b^a,注意,这里右边的两个a值不同,最右边的a=a^b;
故而(3)中a=a^b^b^a^b=a^a^b^b^b=0^b=b。值的交换完成