做者:shede333
主頁:http://my.oschina.net/shede333 && http://blog.sina.com.cn/u/1509658847
版權聲明:原創文章,版權聲明:自由轉載-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0][]html
#交換兩個數值的方法ui
題面:
設a,b兩個整數值,交換兩個a,b兩者的值,
例如:
設 a=1, b=2,
交換後 a=2,b=1.net
這幾種方法,網上也說過不少,可是都沒注意這幾種方法的【坑】
,不要只顧着新奇方法,畢竟【可靠性】
很重要,這裏稍微記錄下unix
##方法1code
最簡單的方法就是加一箇中間量:htm
int c=a; a=b; b=c;
##方法2blog
使用異或運算 xor:ip
a = a xor b; //a=3, b=2 b = a xor b; //a=3, b=1 a = a xor b; //a=2, b=1
注意:
用異或交換兩個整數的陷阱-liubird-ChinaUnix博客
邏輯異或 - 維基百科,自由的百科全書get
##方法3博客
使用加法暫存
a = a + b; //a=3, b=2 b = a - b; //a=3, b=1 a = a - b; //a=2, b=1
注意:
a,b的值爲足夠大的值,例如在int 16位的狀況下, a,b 都爲2^16,那麼a,b相加就會出現溢出狀況。
refer: 交換兩個整型數的方法 - Fangzhen - 博客園
##其它方法
待補充