第 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;
}
本文介绍了C++中交换两个数字的三种方法:第一种是通过临时变量实现,直观易懂;第二种利用算术操作,但适用性有限且易导致溢出;第三种是采用按位异或操作,基于异或运算的特性完成交换,无需额外空间。
7797

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



