一、引入第三变量
1、法1
此处是引用了一个临时变量t,用于暂时存放a或b,
第12行:先将a放入t中,此时t的变量值是a,a是一个空变量;
第13行:然后将b放入a中,此时a的变量值是b,b是一个空变量;
第14行:最后将t放入b中,此时b的变量值是t也就是a,t是一个空变量
注:(1)将一个变量名下的变量值放入另一个变量名的时候,被放入的变量名所对应的变量值应该是空的;
(2)箭头所指的方向是被放入的变量名(也就是写在 "=" 前面)
此处也可将 t=a;
a=b;
b=t'
换为: t=b;
b=a;
a=t;
补充一个小技巧:
因为由注(1)可得,被放入的必须是空的变量名,所以会出现这种鱼咬尾的现象,最终临时变量t依然是一个空的变量名。
2.异或运算
补充一下异或运算的基本规则:0^0=0
1^0=1
0^1=1
1^1=0
这意味着如果两个位中有一个为1,那么结果就是1,否则结果为0。
(总结一下,就是如果两个值不相同,则异或结果为1。如果相同,异或结果为0)
这里的两个值指的是a^b时,a与b的二进制表示下的0与1之间的相同或不同
举个例子:int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int c = a ^ b; // 结果为 0110,即6
第11行:t=a^b; //单纯的在t中放入了一个由a,b构成的变量值
第12行:b=t^b; //意为b=a^b^b(此处b^b可抵消,所以结果为b=a,实现了将a的变量值放入b的目的)
第13行:a=t^a; //同上操作,实现了将b的变量值放入a的目的