不需要第三个变量的变量交换

要知道的事:

a^0=a;

a^a=0.

void inplace_swap(int *x, int *y){

*y =*x ^ *y;  //Step 1
*x = *x ^ *y; //Step 2
*y =*x ^*y;   //Step 3

}

正如程序名字暗示的,我们认为这个过程交换了指针变量x y位置处存放的值。

注意,与通常方法不同,该方法不需要第三个临时变量存储另一个值。不过这种方法性能上优势不大,仅仅是个智力游戏。

Step*x*y
1aa^b
2ba^b
3ba