陳胤辰中原商設
首頁
簡介
講師介紹開課資訊
課程
運算思維與程式設計自然科學與人工智慧程式語言導論
互動
物品交換三門問題下注模擬器數字推盤河內塔
編程
線上編程P5.js
應用
人體系統玄學系統建築系統

語言

繁體中文简体中文English

陳胤辰

中原大學商業設計系
資宸科技

快速連結

  • 講師介紹
  • 開課資訊
  • 互動遊戲
  • 程式教學
  • 文章

聯絡 & 社群

© 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)

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