不用第三方参数交换两个数的方法

本文介绍了五种在不使用额外临时变量的情况下实现两个变量值交换的方法,包括算术运算、位运算等手段,为程序员提供了多样化的选择。

网上搜了下,五种:

(1)

a=a+b-(b=a);
(2)
b=a+(a=b)*0;
(3)
a=a+b;
b=a-b;
a=a-b;

(4)

a=a*b;
b=a/b;
a=a/b;

(5)

a=a^b;
b=a^b;
a=a^b;

不使用第三方参数交换两个参数值通常有以下种常见方法: ### 异或法 异或法利用了异或运算的特性,即 `x ^ x = 0` 和 `x ^ 0 = x`。以下是使用异或法交换两个整数的代码示例: ```cpp #include <iostream> using namespace std; // 异或法 void swap1(int &a, int &b) { a = a ^ b; b = a ^ b; a = a ^ b; } int main() { int a = 10; int b = 20; swap1(a, b); cout << "a = " << a << ", b = " << b << endl; return 0; } ``` 在 `swap1` 函数中,首先 `a = a ^ b`,接着 `b = a ^ b` 相当于 `b = (a ^ b) ^ b`,根据异或运算的性质,`(a ^ b) ^ b = a`,此时 `b` 的值已经变为原来 `a` 的值。最后 `a = a ^ b` 相当于 `a = (a ^ b) ^ a`,同样根据异或运算性质,`(a ^ b) ^ a = b`,这样就完成了两个数的交换 [^1]。 ### 加减法 加减法通过对两个数进行加和减的操作来实现交换。以下是使用加减法交换两个整数的代码示例: ```cpp #include <iostream> using namespace std; // 加减法 void swap2(int &a, int &b) { a = a + b; b = a - b; a = a - b; // 或者一行代码:a = a + b - (b = a); } int main() { int a = 10; int b = 20; swap2(a, b); cout << "a = " << a << ", b = " << b << endl; return 0; } ``` 在 `swap2` 函数中,`a = a + b` 计算数之和并存入 `a`,然后 `b = a - b` 相当于 `b = (a + b) - b`,结果 `b` 的值变为原来 `a` 的值,最后 `a = a - b` 相当于 `a = (a + b) - a`,`a` 的值变为原来 `b` 的值,从而实现交换 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值