交换两个变量a、b值的五种方法
一、利用第三个变量交换
创建一个新的变量来作为桥梁交换两个变量的值
c = a;
a = b;
b = c;
二、利用表达式交换
利用表达式从左至右的计算顺序交换两个变量的值
a = a + b - (b = a); //从左至右计算
三、利用+、-交换
两变量之和减去本身的值为另一个的值
Note:可能导致中间值过大而溢出
a = a + b;
b = a - b;
//表达式右边的a为之前a、b之和;b为之前a的值
a = a - b;
四、利用*、/交换
与利用+、-的原理相同
Note: 可能出现中间值过大而溢出
a = a * b;
b = a / b;
a = a / b;
五、利用异或交换 (最快)
最快的交换方法
异或两次同一个数,将得到原数值
Note:不能交换两个相同值的数
/*以A和B分别代表a、b的初始值*/
//a = A ^ B
a = a ^ b;
//b = (A ^ B) ^ B = A
b = a ^ b;
//a = (A ^ B) ^ ((A ^ B) ^ B) = B
a = a ^ b;