将两个变量a,b的值进行交换,不使用任何中间变量
在C++中,不使用中间变量交换两个数有多种实现方式,以下是常见的三种方法及代码示例:
1. 加减法交换(适用于整数)
利用加减法的可逆性实现交换,注意可能存在溢出风险。
cpp
void swapByAddSub(int& a, int& b) {
a = a + b; // a保存a+b的和
b = a - b; // b = (a+b) - b = a(原始a的值)
a = a - b; // a = (a+b) - a(当前b的值)= 原始b的值
}
2. 异或运算交换(适用于整数)
利用异或运算的特性( a ^ a = 0 , a ^ 0 = a ),无溢出风险。
cpp
void swapByXOR(int& a, int& b) {
a = a ^ b; // a ^ b的结果存入a
b = a ^ b; // b = (a ^ b) ^ b