不用臨時變量交換兩個變量的值


在學習C語言的時候,涉及到兩個變量值的交換,其中用到臨時變量。

類似於:

temp=a;

a=b;

b=temp;

 這樣的語句,如果在沒有臨時變量的情況下,該如何做呢?

網絡上的人們給出了兩種方法:

一、異或法

a=a^b;

b=b^a;

a=a^b; 

 二、加減法

 a = a + b;  

 b = a - b;  

 a = a - b;

 其實我們看加減法更容易理解,也有許多人用這種方法,雖然這些方法可能用不到,但是了解下還是有必要的,至少要讀懂別人的代碼是吧。

 

下面是一些個人的分析:

首先從簡單的加減法來進行學習測試。

a=a+b;

此時a為兩個數之和,我們用sum來表示,這樣就變成了

sum=a+b;

b=a-b;

這個步驟的時候,相當於

b=sum-b;

b=a+b-b=a;

最后一步:a=a-b;

也就是a=sum-b,這個時候,b已經變成了a,也就是

a=sum-a=a+b-a=b;

證明結束,嘿嘿,簡單有趣吧。馬上關燈了,明天測試另一個。

 

今天來看看關於異或的情況

首先是a=a^b;

同理,我們設sum=a^b;

第二步b=b^a; 相當於b=b^sum=b^a^b=a;

第三步:a=a^b=sum^b=a^b^a=b;

 

其實兩個方法都類似,我們沒有臨時變量,就自己用一個來做臨時變量(相當於臨時變量)來完成我們的交換。

當然,我們要注意,是不是所有的數據類型都能這樣用呢?你可以自己試試哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM