不用三方变量,交换两个变量值。

简单的:
a=a+b;
b=a-b;
a=a-b;
这种好想起,
恶心点的比如要求最短:
a^=b^;
谁解释下这个异或。
还有这个:
a=b+(b=a)*0
这个深度怎么理解赋值执行顺序。

a=a+b;

b=a-b;

a=a-b;

这里的异或是按位,值不同为1 比如 1^2 :
01 1
10 2


11 3

a=b+(b=a)*0
先计算括号里面的b=a,然后把b+(b=a)*0表达式的结果给a,但是结果就是b。这时候b的值并不是a的值,要等这句执行完才会是

void swap(int &a,int &b)
{

a=a^b;

b=a^b;

a=a^b;

}