异或运算中有这样的一个性质:a == a^b^b, 计算过程是: a = a ^ b b = b ^ (a^b) a = (a^b) ^ (b^a^b) void swap(int* a, int* b) { //(1)用异或运算 *a ^= *b; *b ^= *a; *a ^= *b; *a ^= *b ^= *a ^= *b; *a ^= (*b ^= (*a ^= *b)); //(2)用加减运算 *a = *a + *b; *b = *a - *b; *a = *a - *b; //2、引入中间变量 int t = *a; *a = *b; *b = t; }