不用中间变量交换 a ,b(三种方法)

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:38:54
a = a + b;
b = a - b;
a = a - b;

a = a^b;
b = a^b;
a = a^b;
还有其他方法的,但是我忘记了,谁会

不用中间变量交换两个变量的值:

1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失。

a = a + b;

b = a - b;

a = a - b;

2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换。

a = a^b;

b = a^b;

a = a^b;

3、乘除法:可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题。而且乘除法比加减法要多一条约束:b必不为0。

a = a * b

b = a / b

a = a / b

其中加减,乘除容易越界,用位运算异或效率最高,且不会越界。

使用位运算交换两个数,是利用了异或的自反性: a^b^b=a^0=a;

扩展资料:

异或,英文为exclusive OR,缩写成xor