前提
要交换的两个数的位置不相同时(不是同一块内存)可以用异或运算实现交换
例子
#include <stdio.h>
int main()
{
int a = 12;
int b = 24;
// 交换
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d, b = %d\n", a, b);
return 0;
}
a = 24, b = 12
原理
a = a ^ b
b = a ^ b = a ^ b ^ b = a
a = a ^ b = a ^ b ^ a = b
两个位置相同的数错误交换
a与b位置相同
a = a ^ b = a ^ a = 0 此时a,b都指向同一片内存,都为0