浅谈不使用第三个变量交换两个变量的值的方法

1、方法一:其他语言实现

a = 1;
b = 2;
a = b - a; // a = 1; b = 2
b = b - a; // a = 1; b = 1
a = b + a; // a = 2; b = 1

1) 原理:

把a、b看做数轴上的点,围绕两点间的距离来进行计算。

2) 具体过程:

① a=b-a求出a、b两点的距离,并将其保存在a中;

② b=b-a求出a到原点的距离(b到原点的距离与a、b两点距离之差),并将其保存在b中;a=b+a求出b到原点的距离(a到原点距离与a、b两点距离之和),并将其保存在a中。

3) 缺点:

① 只能用于数字类型,不能用于字符串;

② a+b有可能溢出(超出int的范围),但溢出是相对的,+溢出,可以-回来,所以溢出不溢出没关系,就是不安全。

 

2、方法二:其他语言实现

a = 10; // a = 1010
b = 12; // b = 1100
a = a ^ b; // a = 0110,b = 1100
b = a ^ b; // a = 0110,b = 1010
a = a ^ b; //a = 1100 = 12,b = 1010 = 10

原理:由异或运算的特点决定,通过异或运算能够使数据中的某些位翻转,其他位不变,这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。


3、方法三:JavaScript实现

var a = 1; b = 2;
b = [a, a = b][0];
console.log(a); // 2
console.log(b); // 1

你可能感兴趣的:(基础)