1. Python 的方式
a, b = b, a
2. 异或(避免中间变量的定义)
(a⊕b)⊕a=b(a⊕b)⊕b=a(a⊕b)⊕a=b(a⊕b)⊕b=a
void swap(int &a, int &b) {
a = a^b;
b = a^b;
a = a^b;
}
当然利用C 语言的左值特性,还可进一步将其简化为:
void swap(int &a, int &b) {
a ^= b ^= a ^= b;
// b ^= a ^= b ^= a;
}
void swap(int *a, int *b) {
*a ^= *b ^= *a ^= *b;
}
- a ^= b:a = a^b
- b ^= a ^= b:
- 此时的 a 已经通过第一步,变为了 a^b(这里的 a 为原始的 a)
- 则 b^ (a^ b) = a,
- 顺利将 a 赋值到 b 的位置;
- a ^= b ^= a ^= b:
- 此时的 a 仍为 a^b
- 此时的 b 已为 a
- 则 a ^b ⇒ (a^b) ^ a ⇒ b

本文介绍了一种使用Python的异或运算符实现变量交换的方法,无需使用额外的中间变量,展示了C语言中left value特性如何简化此过程,并通过代码实例进行了详细解释。
1079

被折叠的 条评论
为什么被折叠?



