陈胤辰中原商设
首页
上学期・AI
课程总览预测世界AI 历史AI 实验室自主学习
下学期・编程
课程总览JS 基础教学JavaSciptP5.js (上课用)运算思维与程序设计互动游戏
延伸探索
人体系统玄学系统建筑系统原民织布
简介
讲师介绍开课资讯

语言

繁体中文简体中文English日文Bahasa Indonesia

陈胤辰

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

快速链接

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

联系 & 社群

© 2026 陈胤辰。版权所有。

Built with Next.js & Tailwind CSS

← 回到文章列表
程式基礎變數邏輯

交換兩個變數為何需要暫存?從生活例子理解程式邏輯

2025-02-01·6 分鐘閱讀

問題起源


假設我們想交換兩個杯子的飲料:


  • 杯子 A:可樂
  • 杯子 B:橙汁

  • 如果直接把杯 A 倒入杯 B,再把杯 B 倒入杯 A……你會得到一杯混合飲料,不是交換。


    這就是程式中 a = b; b = a 的問題所在。




    為什麼需要暫存變數?


    # 錯誤方法(值會被覆蓋)
    a = 1
    b = 2
    a = b   # a 現在是 2,原本的 1 不見了!
    b = a   # b 還是 2
    
    print(a, b)  # 2 2  (不是我們要的 2 1)
    

    # 正確方法:使用暫存變數
    a = 1
    b = 2
    temp = a   # 先把 a 存到 temp
    a = b      # 覆蓋 a
    b = temp   # 從 temp 恢復原本的 a
    
    print(a, b)  # 2 1  (正確!)
    



    Python 的 Tuple 解包(語法糖)


    Python 提供了更優雅的寫法,底層仍是類似暫存的機制:


    a = 1
    b = 2
    a, b = b, a  # Python 先建立右側 tuple (2, 1),再解包賦值
    
    print(a, b)  # 2 1
    



    XOR 交換(進階)


    不用任何額外記憶體空間的位元運算技巧:


    a = 5   # 二進位: 101
    b = 3   # 二進位: 011
    
    a = a ^ b  # a = 110 = 6
    b = a ^ b  # b = 110 ^ 011 = 101 = 5 (原本的 a)
    a = a ^ b  # a = 110 ^ 101 = 011 = 3 (原本的 b)
    
    print(a, b)  # 3 5
    

    前往互動遊戲,用拖拉的方式直覺理解三種交換模式!


    ← 更多文章