迴圈用來重複執行某段邏輯。
最常見的兩種是 while loop 迴圈(不確定次數的迴圈)和 for loop 迴圈(確定次數、可計數的迴圈)。
另外還有 for each 迴圈,之後的某個概念會再介紹。
for loop 迴圈由一個標頭和一個程式區塊組成,程式區塊以大括號包住迴圈的主體。
標頭由 3 個以分號 ; 分隔的部分組成:初始化敘述、條件,以及另一個運算式。
這幾個部分都可以是空的。
for (init-statement; condition; expression) {
some_statement;
}
while loop 迴圈只要條件檢查為 true,就會一直執行它的主體。
下面的程式片段示範如何把 for 迴圈改寫成 while 迴圈。
init-statement;
while(condition) {
some_statement;
expression;
}
使用迴圈時,經常需要把計數器變數加 1 或減 1。
這種操作太常見了,所以有專屬的運算子:++ 和 --。
它們有前綴和後綴兩種形式。 前綴形式會在變數被用於該敘述之前先改變它,後綴形式則是在之後才改變。 大多數情況下,你想要的應該都是前綴形式。
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
初始化部分通常用來設定計數器變數,條件會檢查迴圈應該繼續還是停止,而後置部分通常會在每次重複結束時把計數器遞增。
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
這個迴圈會把 1 到 9(含 9)的數字加總。
在迴圈主體裡,你可以使用 break 關鍵字來完全停止迴圈的執行:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
相對地,continue 關鍵字只會停止目前這次疊代的執行,並繼續進行下一次疊代:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
注意:通常把
break和continue的使用降到最低,或完全避免使用,會讓迴圈的邏輯更容易理解。