C語(yǔ)言如何交換兩變量值?5大方法告訴你!

C語(yǔ)言

寫在前面:

C語(yǔ)言中交換兩個(gè)變量值的操作經(jīng)常會(huì)用到,也有不少人提問(wèn)諸如不用臨時(shí)變量怎么交換兩個(gè)變量值的問(wèn)題,今天在這里做一個(gè)總結(jié),也算是對(duì)這個(gè)問(wèn)題的統(tǒng)一回復(fù),一共總結(jié)了5種方法(名字都是我自己取的,不當(dāng)之處還請(qǐng)批評(píng)指正),希望大家看完有所收獲。

1.臨時(shí)變量法

方法解釋:采用臨時(shí)變量的方法,作為中間過(guò)渡,這是最簡(jiǎn)單也是大家最容易想到的方法,此法在各種場(chǎng)合應(yīng)用極多,應(yīng)該熟練掌握。

#include

int main(void)

{

int a=1,b=2,tmp;

tmp =a;

a=b;

b=tmp;

printf("%d %d",a,b);

return 0;

}

2.加減交換法

方法解釋:顧名思義,使用數(shù)學(xué)中的加減法進(jìn)行交換,先把a(bǔ)+b的結(jié)果暫時(shí)先保存在變量a中,然后通過(guò)這改變后的a和原始的b進(jìn)行減法就可以得到交換后的b,缺點(diǎn)是a+b的結(jié)果可能越界。

#include

int main(void)

{

int a=1,b=2;

a = a + b;

b = a - b;

a = a - b;

printf("%d %d",a,b);

return 0;

}

3.乘除交換法

方法解釋:該方法與加減法類似,就是把加減替換為乘除,缺點(diǎn)是因?yàn)椴捎昧顺朔?,因此比加法更容易越界,使用時(shí)應(yīng)謹(jǐn)慎。

#include

int main(void)

{

int a=1,b=2;

a = a * b;

b = a / b;

a = a / b;

printf("%d %d",a,b);

return 0;

}



小編給大家推薦一個(gè)學(xué)習(xí)氛圍超好的地方,C/C++交流企鵝裙:【870+963+251】適合在校大學(xué)生,小白,想轉(zhuǎn)行,想通過(guò)這個(gè)找工作的加入。裙里有大量學(xué)習(xí)資料,有大神解答交流問(wèn)題,每晚都有免費(fèi)的直播課程




4.異或交換法

方法解釋:巧妙使用異或運(yùn)算來(lái)進(jìn)行交換,這種方法主要利用了異或的特性a^b的值先保存到a,因?yàn)閍^b^b=a所以可以順利完成交換,這種方法是很完美的,不存在越界的問(wèn)題。

#include

int main(void)

{

int a=1,b=2;

a = a ^ b;

b = a ^ b;

a = a ^ b;

printf("%d %d",a,b);

return 0;

}

5.移位交換法

方法解釋:這種方法不太常用,原理是把原來(lái)的int類型的a的值拆分成高16位和低16位,相當(dāng)于多了16位的暫存空間可以周轉(zhuǎn),缺點(diǎn)是如果a或者b超過(guò)了16位,這種方法就會(huì)出錯(cuò),此方法較復(fù)雜且容易出錯(cuò),因此不建議大家使用。

#include

int main(void)

{

int a=1,b=2;

a <<= 16;

a |= b;

b = a >> 16;

a = a & 0xffff;

printf("%d %d",a,b);

return 0;

}

反思總結(jié):其實(shí)這五種方法從本質(zhì)上分就三大類,一是臨時(shí)變量,二是加減乘除運(yùn)算,三是位運(yùn)算。因?yàn)槠涓髯詢?yōu)缺點(diǎn)的問(wèn)題,我個(gè)人建議大家盡量使用臨時(shí)變量法和異或交換法這兩種,其中臨時(shí)變量法在其他的地方也應(yīng)用極多,大家重點(diǎn)掌握,就講到這里吧,謝謝大家。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容