已知
已知有两个变量a、b,现需要交换这两个变量的值。
基础方法
使用中间变量
temp = a;
a = b;
b = temp;
进阶1(不推荐)
使用乘法
a = a*b;
b = a/b;
a = a/b;
注意⚠️:乘法过程可能会有溢出,另外该方法如果a、b为浮点型,计算之后可能会出现精度损失,还有b不能为零,且乘除法运算的时间较其他基本运算长,不建议使用,只是让你知道有这么一个方法而已。
进阶2
使用加法
a = a+b;
b = a-b;
a = a-b;
该方法较基本方法不需要额外的变量,节省空间,较进阶1运算速度更快,也没有进阶1的副作用,⚠️唯一需要注意的就是加法过程可能会溢出,只要确保不会出现这个问题,还是推荐使用的。
进阶3(墙裂推荐)
使用异或,位运算为底层操作,速度更快。
a = a^b;
b = a^b;
a = a^b;
原理:a^b^b == a,与顺序无关。