C語言交換兩個變數值(無需第三個引數)範例

2019-10-16 22:09:38

在很多情況下,程式員需要交換兩個變數的值。 在這裡,我們將學習如何交換兩個整數變數的值,這可以交換任何型別的值。 變數之間的值可以通過兩種方式進行交換:

  1. 借助第三個(temp)變數
  2. 不使用任何臨時變數

我們已經學會了第一種方法。 這裡將學習第二種方法。雖然它看起來像一個魔法,但它只是一個小技巧。 想象一下,現在我們有兩個數位12分別儲存在變數ab中 -

如果相加變數ab,即(1 + 2)並儲存到a,則a將變為3b仍然為2
現在從a(3)的新值中減去b(2),並將其儲存到b,那麼a仍然是3b變成1

注意:變數a現在的值是:1

現在,我們從3中減去b的具有新值1,並將其儲存到b(a = 3 - 1),然後變數a的值變成2。最後得出結論 - 兩個變數的值被交換。

偌實現

C語言實現上述演算法應該是這樣的 -

#include <stdio.h>

int main() {
   int a, b;

   a = 11;
   b = 99;

   printf("Values before swapping - \n a = %d, b = %d \n\n", a, b);

   a = a + b;  // ( 11 + 99 = 110)
   b = a - b;  // ( 110 - 99 = 11)
   a = a - b;  // ( 110 - 11 = 99)

   printf("Values after swapping - \n a = %d, b = %d \n", a, b);
}

執行上面範例程式碼,得到以下結果 -

Values before swapping -
 a = 11, b = 99                                         

Values after swapping -
 a = 99, b = 11