首頁  >  文章  >  後端開發  >  【C語言】5種妙招教你輕鬆搞定變數值交換

【C語言】5種妙招教你輕鬆搞定變數值交換

little bottle
little bottle轉載
2019-04-27 11:15:283607瀏覽

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中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除