小編給大家分享一下C語言如何輕松搞定變量值交換,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕十余年,專業(yè)且經(jīng)驗(yàn)豐富。十余年網(wǎng)站優(yōu)化營銷經(jīng)驗(yàn),我們已為千余家中小企業(yè)提供了成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)解決方案,按需策劃設(shè)計(jì),設(shè)計(jì)滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!
1.臨時(shí)變量法
方法解釋:采用臨時(shí)變量的方法,作為中間過渡,這是最簡單也是大家最容易想到的方法,此法在各種場(chǎng)合應(yīng)用極多,應(yīng)該熟練掌握。
#includeint 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中,然后通過這改變后的a和原始的b進(jìn)行減法就可以得到交換后的b,缺點(diǎn)是a+b的結(jié)果可能越界。
#includeint 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)慎。
#includeint main(void){ int a=1,b=2; a = a * b; b = a / b; a = a / b; printf("%d %d",a,b); return 0; }
4.異或交換法
方法解釋:巧妙使用異或運(yùn)算來進(jìn)行交換,這種方法主要利用了異或的特性a^b的值先保存到a,因?yàn)閍^b^b=a所以可以順利完成交換,這種方法是很完美的,不存在越界的問題。
#includeint main(void){ int a=1,b=2; a = a ^ b; b = a ^ b; a = a ^ b; printf("%d %d",a,b); return 0; }
5.移位交換法
方法解釋:這種方法不太常用,原理是把原來的int類型的a的值拆分成高16位和低16位,相當(dāng)于多了16位的暫存空間可以周轉(zhuǎn),缺點(diǎn)是如果a或者b超過了16位,這種方法就會(huì)出錯(cuò),此方法較復(fù)雜且容易出錯(cuò),因此不建議大家使用。
#includeint main(void){ int a=1,b=2; a <<= 16; a |= b; b = a >> 16; a = a & 0xffff; printf("%d %d",a,b); return 0; }
看完了這篇文章,相信你對(duì)C語言如何輕松搞定變量值交換有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!