Chen Yin-ChenCYCU Biz Design
Home
Fall・AI
OverviewPredicting the WorldAI HistoryAI LabSelf-study
Spring・Programming
OverviewJS Basic TutorialJavaScriptP5.js (Lecture)Computational Thinking & ProgrammingGames
Explore
Human Motion SystemAstrology SystemArchitecture SystemIndigenous Loom
About
AboutSchedule

Language

Traditional ChineseSimplified ChineseEnglishJapaneseBahasa Indonesia

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

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

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

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
    

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


    ← 更多文章