交换变量
以下约定要交换的两个变量为 x
, y
。
第三者交换法
定义第三个变量,用于交换两个变量的值。
var tmp = x;
x = y;
y = x;
加法交换法
这种方法通过加法的运算来交换变量,但是要注意这种方法有局限性
- 不能交换非数字类型的变量
- 对于浮点类型的变量可能会出现问题
- 加法过程中可能会出现超出上限的问题
x = x + y;
y = x - y;
x = x - y;
异或交换法
通过异或运算的性质得到的一种交换方法,这种交换方法有一定的局限性
- 只能用于交换可以进行异或运算的数据类型
- 如果
x
,y
指向同一个内存地址,则异或交换法失效
x ⊕ y ⊕ y = x x\oplus y\oplus y=x x⊕y⊕y=x
x = x ^ y;
y = x ^ y;
x = x ^ y;
总结
综上所述,第三者交换法应用场景最广泛,异或次之,再者是加法交换法,应当根据不同场景分别使用。