以整数为例:
int x = 7, y = 8;
x += y;
y = x - y;
x = x - y;
更通用一点的做法是用异或
int x = 7, y = 8;
x = x ^ y;
y = x ^ y; //x^y^y=x
x = x ^ y; //x^y^x=y
用加法交换就是把x作为临时变量存储,代替常用的tmp
用异或交换是利用异或运算的性质,一个数异或本身等于0,,一个数异或0等于本身。所以x异或y两次得到x,y异或两次x得到y.
以整数为例:
int x = 7, y = 8;
x += y;
y = x - y;
x = x - y;
更通用一点的做法是用异或
int x = 7, y = 8;
x = x ^ y;
y = x ^ y; //x^y^y=x
x = x ^ y; //x^y^x=y
用加法交换就是把x作为临时变量存储,代替常用的tmp
用异或交换是利用异或运算的性质,一个数异或本身等于0,,一个数异或0等于本身。所以x异或y两次得到x,y异或两次x得到y.