陈胤辰中原商设
首页
简介
讲师介绍开课资讯
课程
运算思维与程序设计自然科学与人工智能程序语言导论
互动
变量交换三门问题下注模拟器数字推盘汉诺塔
编程
JS 基础教学JavaSciptP5.js (上课用)
应用
人体系统玄学系统建筑系统

语言

繁体中文简体中文English

陈胤辰

中原大学商业设计系
资宸科技

快速链接

  • 讲师介绍
  • 开课资讯
  • 互动游戏
  • JavaScipt

联系 & 社群

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

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