陳胤辰中原商設
首頁
上學期・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
    

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


    ← 更多文章