简单的:
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;
}