for 迴圈
把迴圈的三樣東西寫在同一行。 · ⏱ 約 25 分鐘
你會學到三件事
for 就是 while 的三樣東西寫在一起
break 跳出整個迴圈,continue 只跳過這一圈
- 為什麼大家幾乎都從
0 開始數
開始之前
上一課的迴圈,三樣東西散在三個地方:
int n = 1; // ① 在上面
while (n <= 5) { // ② 在這裡
...
n = n + 1; // ③ 在最後一行,很容易忘
}
for 把它們放在同一行,所以你不可能漏掉第三樣。
一、for
for (int i = 1; i <= 5; i++) {
cout << i << endl;
}
分號隔開的三段,就是上一課那三樣東西:
for ( int i = 1 ; i <= 5 ; i++ ) {
① 起點 ② 條件 ③ 前進
執行順序:起點跑一次 → 問條件 → 做內容 → 前進 → 回去問條件 → …
⚠️ i 只活在這個迴圈裡。 迴圈結束之後 i 就不存在了——
想在外面用到它的值,要另外宣告一個變數。
二、跳出去 vs 跳過這圈
for (int i = 1; i <= 5; i++) {
if (i == 3) continue; // 這一圈剩下的不做,直接前進
cout << i << endl;
}
印出 1 2 4 5——3 被跳過了。
|
做什麼 |
continue |
這一圈剩下的不做,跳到「前進」,繼續下一圈 |
break |
整個迴圈結束,跳到大括號後面 |
⚠️ 兩個都只影響最靠近的那一層迴圈。多層迴圈的時候要注意
(第 15 課會遇到)。
三、為什麼大家從 0 開始
上面的例子從 1 開始,因為我們要印 1 到 5。
而處理資料的時候幾乎都這樣寫:
for (int i = 0; i < n; i++) {
0 開始、< 而不是 <=。原因是第 7 課那件事:
位置從 0 開始數,所以 n 個東西的位置是 0 到 n-1。
寫成 i = 0; i < n 的話,i 正好走過每一個位置,一個不多一個不少。
⚠️ 寫成 i <= n 會多跑一圈,而多的那一圈碰到的是不存在的東西。
這個形狀從下一課的陣列開始會一直出現。先把它記成一個整體。
完成的樣子
int main() {
for (int i = 1; i <= 5; i++) {
if (i == 3) continue;
cout << i << endl;
}
return 0;
}
換你了
把 continue 改成 break,執行看看差在哪。
(會印 1 2 就停——break 是整個迴圈結束,不是跳過一圈。)
這一課你做了什麼
- 你用
for 把迴圈的三樣東西寫在同一行
- 你用
continue 跳過一圈、用 break 跳出整個迴圈
- 你知道
i = 0; i < n 這個形狀為什麼是標準寫法
如果卡住了
| 你看到 |
多半是因為 |
迴圈外面用 i 說沒宣告 |
i 只活在迴圈裡。要在外面用就在外面宣告 |
| 多跑了一圈 |
i <= n 應該是 i < n |
for (...) ; 什麼都沒做 |
多了一個分號——和 if 同一個錯 |
break 沒跳出全部 |
它只跳出最靠近的那一層 |
在編輯器打開這一課 →