不用第三个变量,直接交换两个变量的值
代码解读
-
a=a+b;
将a与b的和暂存到a中。此时a=a_original + b_original。 -
b=a-b;
用新的a减去原来的b,得到原来的a,于是b变为a_original。 -
a=a-b;
再用新的a(仍是a_original + b_original)减去新的b(已经是a_original),得到b_original,于是a变为b_original。
执行完毕后,a 与 b 的值已完成互换。
适用范围与优势
- 可读性强:逻辑顺序直观,易于理解,尤其适合初学者或代码审查时快速定位。
- 无需位运算:对所有整数类型(包括有符号数)均适用,只要不出现溢出。
潜在风险
- 整数溢出:若
a与b的和超过目标数据类型的表示范围,会导致溢出,产生错误结果。例如在 32 位有符号整数上,a=2^31-1、b=1时a+b会溢出为负数。 - 浮点数不适用:加减法交换依赖精确的加法与减法,浮点数的舍入误差会破坏交换过程。