Chen Yin-ChenCYCU Biz Design
Home
About
AboutSchedule
Courses
Computational Thinking & ProgrammingNatural Science & Artificial IntelligenceProgramming Language Introduction
Interactive
Variable SwapMonty HallBetting SimulatorSliding PuzzleTower of Hanoi
Programming
JS Basic TutorialJavaScriptP5.js (Lecture)
Applications
Human Motion SystemAstrology SystemArchitecture System

Language

Traditional ChineseSimplified ChineseEnglish

Chen Yin-Chen

Business Design Department, Chung Yuan Christian University
Zishen Technology

Quick Links

  • About
  • Schedule
  • Games
  • JavaScript

Contact & Social

© 2026 Chen Yin-Chen。All rights reserved。

Built with Next.js & Tailwind CSS

🎮 Play🏆 Leaderboard📖 Theory

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

從生活例子理解程式邏輯

問題起源

假設你想交換兩個杯子的飲料(可樂 ↔ 橙汁)。如果直接把杯 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)

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