---
# System prepended metadata

title: 'C++筆記: 迴圈(For)'
tags: [迴圈]

---

# 迴圈(For)
C++中的 `for` 語句是一種控制結構，主要***用於重複執行一段代碼***，通常用於知道確切的迴圈次數時。`for` 迴圈提供了一種簡潔的語法來初始化counter、設定條件和更新counter。

### 一、`for` 語句的基本結構

`for` 語句的基本語法如下：

```cpp=
for (初始化; 條件; 更新) {
    // 迴圈內要執行的代碼
}
```

- **初始化**：在迴圈開始時執行的代碼，通常用來定義計數器變量（例如 `int i = 0`）。
- **條件**：每次迴圈執行前檢查的條件，當條件為真時執行迴圈內的代碼，當條件為假時結束迴圈。
- **更新**：每次迴圈執行完畢後執行的代碼，通常用來改變計數器的值（例如 `i++`）。
:::warning
初始化、條件、更新可以寫不只一個，但是要用***逗號隔開而不是分號***
ex:
```cpp=
for (int i = 0 , int j = 0; i < 4 , j < 3; i++ , j+=2)
```
:::

### 二、`for` 語句的用法範例

#### 範例 1：基本的 `for` 迴圈

這個範例展示了一個基本的 `for` 迴圈，它從 0 開始到 9，每次迴圈輸出當前的計數器值。

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

int main() {
    for (int i = 0; i < 10; i++) {
        cout << "當前值： " << i << endl;
    }
    return 0;
}
```

#### 範例 2：使用 `for` 迴圈計算總和

這個範例展示了如何使用 `for` 迴圈來計算從 1 到 10 的總和。

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

int main() {
    int sum = 0;

    for (int i = 1; i <= 10; i++) {
        sum += i; // 將 i 加到 sum 中
    }

    cout << "1 到 10 的總和是： " << sum << endl;
    return 0;
}
```

#### 範例 3：倒序輸出

這個範例使用 `for` 迴圈從 10 倒數到 1 輸出。

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

int main() {
    for (int i = 10; i > 0; i--) {
        cout << "倒數計數： " << i << endl;
    }
    return 0;
}
```

#### 範例 4：多重 `for` 迴圈

可以使用嵌套的 `for` 迴圈來處理多維數據，以下範例使用兩個 `for` 迴圈打印一個 5x5 的星號矩陣。

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

int main() {
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            cout << "* "; // 輸出星號
        }
        cout << endl; // 換行
    }
    return 0;
}
```

### 三、`for` 迴圈的變體

1. **省略部分語句**：在 `for` 迴圈中，初始化、條件和更新語句都可以省略，但需確保有適當的邏輯來避免無限迴圈。

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

int main() {
    int i = 0;
    for (; i < 5; ) {
        cout << "當前值： " << i << endl;
        i++;
    }
    return 0;
}
```

2. **無條件迴圈**：可以寫一個無條件的 `for` 迴圈，但必須手動控制迴圈的退出條件，以防止無限迴圈。

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

int main() {
    for (;;) {
        cout << "這是一個無條件迴圈。" << endl;
        break; // 加上 break 以防止無限迴圈
    }
    return 0;
}
```

### 四、注意事項

1. **初始化和更新的範圍**：`for` 迴圈中的變量（如 `i`）的作用域僅限於***迴圈內部***，除非在迴圈外部定義。
2. **條件表達式**：必須返回布林值，否則編譯會報錯。
3. **避免無限迴圈**：確保更新語句能使計數器最終滿足條件以退出迴圈。
4. **可讀性**：儘量保持 `for` 迴圈簡潔，過於複雜的條件或嵌套可能會降低可讀性。

### 五、總結

- `for` 語句是進行重複操作的一個強大工具，適合用於已知迴圈次數的情況。
- 基本結構包括初始化、條件和更新，使用時可根據需求靈活調整。
- `for` 迴圈可以嵌套使用，適合處理多維數據或複雜的計算。

### 六、進一步的學習

在學習 `for` 迴圈的基礎上，可以探索以下主題：

- 與其他控制結構（如 `while`）的比較。
- 更複雜的數據結構，如數組和向量的遍歷。
- 如何在 `for` 迴圈中使用函數和算法進行計算。
#### [C++筆記: 迴圈(While)](https://hackmd.io/mWfjv6N2RnKCfQJkg24R4Q)