以下约定要交换的两个变量为 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;综上所述,第三者交换法应用场景最广泛,异或次之,再者是加法交换法,应当根据不同场景分别使用。