交換兩個變數 (不使用 tmp 變數) 程式寫法

在這邊看到 交換兩個變數 這篇文章, 讓我想到以前書上看到的寫法, 覺得蠻神奇的, 印像特別深刻, 在此記錄一下寫法~ 🙂

假設變數是這樣子:

$a = 'abc';
$b = 'def';

echo "a: $a\n";
echo "b: $b\n";

要把 $a 和 $b 的值做互換(swap) 一般寫法(中間用個暫存變數):

$tmp = $a;
$a = $b;
$b = $tmp;

echo "a: $a\n";
echo "b: $b\n";

那不用暫存變數(tmp) 的寫法如下:

$a ^= $b;
$b ^= $a;
$a ^= $b;

echo "a: $a\n";
echo "b: $b\n";

這樣子就會 $a 和 $b 的值就會互換囉~

感謝 Jace 大大提供的另一種解法, 簡單的短短一行, 就解決囉, 不過有限程式語言種類, ex: PHP(記得 Perl 也有類似的), 程式如下:

list($a, $b) = array($b, $a);


關於「Tsung」

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
分類: Innovation, Programming。這篇內容的永久連結

交換兩個變數 (不使用 tmp 變數) 程式寫法》有 4 則留言

  1. Yuren Ju」的留言:

    python 可以:
    a, b = b, a
    🙂

  2. Tsung」的留言:

    感謝提供, 這.... 真是太簡短了.. Orz..

  3. Jason」的留言:

    把數字變數對調
    a = a + b;
    b = a - b;
    a = a - b;
    這樣a b 就會對調了!
    好像沒什麼關係,
    突然想到而已!

  4. Tsung」的留言:

    但是這個寫法只限數字吧?
    上面的寫法是都不限的唷 😛

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料