第 1 种方式
使用临时变量
特点:很直观,能一下子看出来
void Swap1(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
第 2 种方式
不使用临时变量,使用算术的形式
特点:适用范围比较窄,而且不小心就可能会数据溢出
void Swap2(int& a, int& b)
{
a = a + b;
b = a - b;
a = a - b;
}
第 3 种方式
使用按位异或运算(^)
相关规则:
0 ^ 0 = 01 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1
即相同结果为 0,不相同结果为 1。
举个栗子:2 ^ 32 = 10
3 = 11
结果为: 01 即 2^3=1
void Swap3(int& a, int& b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
完整测试代码
#include <iostream>
using namespace std;
void Swap1(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
void Swap2(int& a, int& b)
{
a = a + b;
b = a - b;
a = a - b;
}
void Swap3(int& a, int& b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main(int argc, char* argv[])
{
int a = 3; int b = 5;
Swap1(a, b);
cout << "a=" << a << ",b=" << b << endl;
return 0;
}