程式中有兩個數a,b,其中a=4,b=5,現在希望交換兩個數的值,使得a=5,b=4.
使用乙個臨時變數來進行儲存
temp = a;
a = b;
b = temp;
使用加減法來進行交換,這種方法實際上就是先把a+b的結果暫時先儲存在變數a中,然後通過這改變後的a和原始的b進行減法就可以得到交換後的b,但是這種方法有乙個缺陷,就是a和b都是int型別,a+b的結果可以越界。
a = a + b;
b = a - b;
a = a - b;
使用乘除法來進行交換,這種方法和方法2類似,只是用a*b代替a+b放在a中暫存,後面思路一樣,這種方法有著和方法2一樣的缺陷,就是越界問題,而且更加容易越界。
a = a * b;
b = a / b;
a = a / b;
使用異或的方法來進行交換,這種方法不存在之前越界的缺陷,是一種很完美的方法,這種方法主要利用了異或的特性a^b的值先儲存到a,因為a^b^b=a所以可以順利完成交換。
a = a ^ b;
b = a ^ b;
a = a ^ b;
使用移位的方法,把原來的int型別的a,把a的值拆分成高16位和低16位,相當於多了16位的暫存空間可以周轉,但是此方法的缺陷也顯而易見,就是如果被賦值的a或者b超過了16位,這種方法就會發生錯誤。
a <<= 16;
a |= b;
b = a >> 16;
a = a & 0xffff;
C語言中交換兩個數的方法總結
temp a a b b temp 這種方法實際上就是先把a b的結果暫時先儲存在變數a中,然後通過這改變後的a和原始的b進行減法就可以得到交換後的b,但是這種方法有乙個缺陷,就是a和b都是int型別,a b的結果可以越界。a a b b a b a a b 這種方法和方法2類似,只是用a b代替a...
c語言 多種方法實現兩個數的交換
交換兩個數的內容是c語言中常見的問題,所以在此總結一下我所學到的幾種方法。首先,舉乙個例子,假設a 10,b 20.第一種方法,借助乙個臨時變數來進行儲存,這是最容易也是最直觀的方法。如下 int a,b,t a 10 b 20 printf a d b d a,b t a a b b t prin...
交換兩個數的三種方法
1.使用臨時變數 public static void main string args throws exception2.不使用臨時變數 加減法 注意int範圍 public static void main string args throws exception3.不適用臨時變數 使用位運算...