C語言中交換兩個變數值的操作經常會用到,也有不少人提問諸如不用臨時變數怎麼交換兩個變數值的問題,今天我們在這裡進行一個總結,一共有5種方法,希望大家看完有所收穫。
1.臨時變數法
方法解釋:採用臨時變數的方法,作為中間過渡,這是最簡單也是大家最容易想到的方法,此法在各種場合應用極多,應該熟練。
#include<stdio.h> int main(void){ int a=1,b=2,tmp; tmp =a; a=b; b=tmp; printf("%d %d",a,b); return 0; }
2.加減交換法
方法解釋:顧名思義,使用數學中的加減法進行交換,先把a b的結果暫時先保存在變數a中,然後通過這改變後的a和原來的b進行減法就可以得到交換後的b,缺點是a b的結果可能越界。
#include<stdio.h> 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.乘除交換法
方法解釋:此方法與加減法類似,就是把加減替換為乘除,缺點是因為採用了乘法,因此比加法更容易越界,使用時應謹慎。
#include<stdio.h> int main(void){ int a=1,b=2; a = a * b; b = a / b; a = a / b; printf("%d %d",a,b); return 0; }
4.異或交換法
方法解釋:巧妙使用異或運算來進行交換,這種方法主要利用了異或的特性a^b的值先保存到a ,因為a^b^b=a所以可以順利完成交換,這種方法是很完美的,不存在越界的問題。
#include<stdio.h> 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.移位交換法
方法解釋:這種方法不太常用,原理是把原來的int類型的a的值拆分成高16位和低16位,相當於多了16位的暫存空間可以周轉,缺點是如果a或b超過了16位,這種方法就會出錯,此方法較複雜且容易出錯,因此不建議大家使用。
#include<stdio.h> 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; }
反思總結:
其實這五種方法從本質上分就三大類,一是臨時變量,二是加減乘除運算,三是位運算。因為各自優缺點的問題,我個人建議大家盡量使用臨時變數法和異或交換法這兩種,其中臨時變數法在其他的地方也應用極多,大家重點掌握,就講到這裡吧,謝謝大家。
相關教學:C語言教學
以上是【C語言】5種妙招教你輕鬆搞定變數值交換的詳細內容。更多資訊請關注PHP中文網其他相關文章!