交換兩個數值的方法,注意有【坑】,閒來無事,總結一下

做者: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 - 博客園

##其它方法

待補充

相關文章
相關標籤/搜索