swap:spa
在oi中,swap用于交换两个变量的数值。3d
初学oi时,咱们这样操做:code
也就是说,须要一个temp变量来寄存x或y的值,由于当一个变量被赋值成为另外一个变量时,没有temp它的值会丢失。blog
貌似很基础的亚子。io
进阶版:class
进阶版swap不在须要中间变量temp,常数也更优:基础
具体是这样的:变量
int sswap(int &x, int &y) { x ^= y ^= x ^= y ; }
原理:一个数通过两次异或后,等于本身:原理
实在不理解手动膜你啦。进阶
因而咱们把上面的式子疯狂展开:
还不理解的话:
这里temp就是第一步x^y的值,把他们不一样的部分做为中间变量,从而在上方第3,4行分别以第一步的x值为temp异或出本身的值。
完结。
/滑稽/