陳胤辰中原商設
ホーム
概要
講師紹介開講情報
講座
計算思考とプログラミング自然科学と人工知能プログラミング言語入門
インタラクティブ
アイテム交換モンティ・ホール問題ベッティングシミュレーター数字スライディングハノイの塔
プログラミング
JS基礎チュートリアルJavaScriptP5.js (授業用)
応用
人体システム占術システム建築システム

言語

繁体中国語簡体中国語English日本語

陳胤辰

中原大学商業設計学科
資宸テクノロジー

クイックリンク

  • 講師紹介
  • 開講情報
  • インタラクティブゲーム
  • JavaScript

お問い合わせ & ソーシャルメディア

© 2026 陳胤辰。著作権所有。

Built with Next.js & Tailwind CSS

🎮 ゲーム🏆 ランキング📖 理論

交換兩個變數為何需要暫存?

從生活例子理解程式邏輯

問題起源

假設你想交換兩個杯子的飲料(可樂 ↔ 橙汁)。如果直接把杯 A 倒入杯 B,再把杯 B 倒回杯 A,你會得到一杯混合飲料——程式裡的 a = b; b = a 有完全一樣的問題。

❌ 錯誤方式(值被覆蓋)

a = 1
b = 2
a = b    # a 現在是 2,原本的 1 不見了!
b = a    # b 還是 2 (不是我們要的 1)
# 結果:a=2, b=2  (交換失敗)

三種正確做法

a, b = 1, 2

# 方法一:暫存變數(最通用,所有語言都適用)
temp = a
a = b
b = temp         # a=2, b=1 ✓

# 方法二:Python tuple 解包(最 Pythonic)
a, b = b, a      # 右側先建立 tuple (2, 1),再解包賦值

# 方法三:XOR 位元運算(不需額外記憶體,進階技巧)
a = a ^ b        # a = 0b01 ^ 0b10 = 0b11
b = a ^ b        # b = 0b11 ^ 0b10 = 0b01 (原本的 a)
a = a ^ b        # a = 0b11 ^ 0b01 = 0b10 (原本的 b)

上方遊戲的「無暫存模式」讓你直觀體驗資料被覆蓋的結果;「有暫存模式」則完整模擬方法一的三步驟過程。