一个有趣的swap函数
C语言版:
void swap (int a, int b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
原理:
a ^ a == 0
0 ^ b == b
异或:同则为零。异则为一
a ^ (b ^ a) == b
b ^ (b ^ a) == a
C语言版:
void swap (int a, int b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
原理:
a ^ a == 0
0 ^ b == b
异或:同则为零。异则为一
a ^ (b ^ a) == b
b ^ (b ^ a) == a