---
# System prepended metadata

title: 兩數交換教學

---

# 兩數交換教學

## 1. 這是什麼阿???
兩數交換是交換兩個變數的值，這在程式設計中經常出現，特別是在排序演算法等場合。C++ 提供了幾種方法來實現兩數交換，下面我們會介紹兩種基礎的方法。

## 2. 交換的基本方法

### 2.1 使用空變數交換
最基本且直觀的方法是使用一個臨時變數來保存其中一個數值，然後進行交換。

```cpp=
#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 5, t = 0;

    cout << "兩個整數交換" << endl;
    
    // 使用臨時變數交換
    t = a; // t = 10
    a = b; // a = 5
    b = t; // b = 10
    
    // 顯示交換後的結果
    cout << "交換後: a = " << a << ", b = " << b << endl;
    
    return 0;
}
```

#### **步驟解釋：**
1. 使用 `cin` 讀取兩個整數 `a` 和 `b`。
2. 使用臨時變數 `t` 保存 `a` 的值。
3. 將 `b` 的值賦給 `a`，再將 `t` 的值（原來的 `a`）塞給 `b`。
4. 輸出交換後的結果。

### 2.2 使用加減法交換
這是一個不需要額外變數的方法，利用加法和減法來達成交換。

```cpp=
#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 5;
    
    // 使用加減法交換
    a = a + b; // a = 15
    b = a - b; // b = 15 - 5 = 10
    a = a - b; // a = 15 - 10 = 5
    
    // 顯示交換後的結果
    cout << "交換後: a = " << a << ", b = " << b << endl;
    
    return 0;
}
```

#### **步驟解釋：**
1. 首先，將 `a + b` 賦給 `a`。
2. 用 `a - b` 更新 `b`。
3. 最後，通過 `a - b` 更新 `a`。

 **注意：** 這個方法會有**溢位**的風險，當 `a` 和 `b` 的數值非常**大**時可能會出現問題。

## 其實還有一個方法，但是現在我不想說XDDD，之後在位元運算應該會出現喔!!