不用临时变量交换两个变量的值
生活随笔
收集整理的這篇文章主要介紹了
不用临时变量交换两个变量的值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在學習C語言的時候,涉及到兩個變量值的交換,其中用到臨時變量。
類似于:
temp=a;a=b;b=temp;?這樣的語句,如果在沒有臨時變量的情況下,該如何做呢?
網絡上的人們給出了兩種方法:
一、異或法
a=a^b;b=b^a;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;
?
其實兩個方法都類似,我們沒有臨時變量,就自己用一個來做臨時變量(相當于臨時變量)來完成我們的交換。
當然,我們要注意,是不是所有的數據類型都能這樣用呢?你可以自己試試哦!
總結
以上是生活随笔為你收集整理的不用临时变量交换两个变量的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WNEWS 专题系统
- 下一篇: android源代码