本座转载咯一個神奇的技巧:http://stupidbeauty.com/Blog/2011/11/%e8%bd%ac%e8%bd%bd%ef%bc%9ac%e7%bc%96%e7%a8%8b%e5%b0%8f%e6%8a%80%e5%b7%a7/。
a=a^b;
b=a^b;
a=a^b;
这样执行之后,a就等于原来的b,b就等于原来的a。
在执行过程中,两个值的变化情况:
a=a^b;
此时a=(原a^原b),b=原b。
b=a^b;
此时b=(原a^原b)^原b,a=(原a^原b)。按照结合律,b=(原a^原b)^原b=原a^(原b^原b)=原a^0=原a,因此b这个时候已经等于原a咯,b=原a。
a=a^b;
此时a=(原a^原b)^原a=(原a^原a)^原b=0^原b=原b。到这个时候,a就等于原b咯,a=原b。
不知道某人一开始是如何想到这个技巧的,这一招能起作用的根本原因可能在于异或是可逆的,其实a和b都在其中暗暗地充当咯临时变量。
HxLauncher: Launch Android applications by voice commands