不用临时变量交换两个变量的值
在學(xué)習(xí)C語言的時候,涉及到兩個變量值的交換,其中用到臨時變量。
類似于:
temp=a;a=b;b=temp;?這樣的語句,如果在沒有臨時變量的情況下,該如何做呢?
網(wǎng)絡(luò)上的人們給出了兩種方法:
一、異或法
a=a^b;b=b^a;a=a^b;?二、加減法
?其實(shí)我們看加減法更容易理解,也有許多人用這種方法,雖然這些方法可能用不到,但是了解下還是有必要的,至少要讀懂別人的代碼是吧。
?
下面是一些個人的分析:
首先從簡單的加減法來進(jìn)行學(xué)習(xí)測試。
a=a+b;
此時a為兩個數(shù)之和,我們用sum來表示,這樣就變成了
sum=a+b;
當(dāng)
b=a-b;
這個步驟的時候,相當(dāng)于
b=sum-b;
即
b=a+b-b=a;
最后一步:a=a-b;
也就是a=sum-b,這個時候,b已經(jīng)變成了a,也就是
a=sum-a=a+b-a=b;
證明結(jié)束,嘿嘿,簡單有趣吧。馬上關(guān)燈了,明天測試另一個。
?
今天來看看關(guān)于異或的情況
首先是a=a^b;
同理,我們設(shè)sum=a^b;
第二步b=b^a; 相當(dāng)于b=b^sum=b^a^b=a;
第三步:a=a^b=sum^b=a^b^a=b;
?
其實(shí)兩個方法都類似,我們沒有臨時變量,就自己用一個來做臨時變量(相當(dāng)于臨時變量)來完成我們的交換。
當(dāng)然,我們要注意,是不是所有的數(shù)據(jù)類型都能這樣用呢?你可以自己試試哦!
總結(jié)
以上是生活随笔為你收集整理的不用临时变量交换两个变量的值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WNEWS 专题系统
- 下一篇: android源代码