从刚开始接触 cpp 大家都会学习的一个东西就是如何交换两个变量的值,一般要新设置一个变量来储存中间值,然后进行赋值运算。下面要介绍的方法可以省去新建一个变量的空间,使用的位运算还可以提高效率。
#include<iostream>using namespace std;void swap(int &a,int &b){ a ^= b; b ^= a; a ^= b;}int main(){ int m = 1; int n = 2; swap(m, n); cout << m << " " << n << endl;}
这里的'^'就是异或运算符⊕。
首先让a = a ⊕ b。
b = b ⊕ a,那么 b = b ⊕ a = b ⊕ a ⊕ b,所以b = a。
最后,a = a ⊕ b,那么 a = a ⊕ b = a ⊕ b ⊕ a = b。
至此,完成了 a 和 b 的交换。