一般來說,有兩類回圈:
條件迴圈和
計數控制迴圈。
只要存在特定條件,就執行條件迴圈。例如,只要輸入值無效,就會執行輸入驗證迴圈。在編寫一個條件迴圈時,無法知道它將疊代的次數。
有時候程式設計師知道迴圈必須執行的確切疊代次數。重複特定次數的迴圈稱為計數控制迴圈。例如,如果一個迴圈要求使用者輸入一年中每個月的銷售金額,則它將疊代 12 次。這實際上意味著,迴圈數為 12,並要求使用者在每次計數時輸入銷售金額。
計數控制迴圈必須具有 3 個要素:
-
必須將計數器變數初始化為起始值。
-
必須通過將其與最終值進行比較來測試計數器變數。當計數器變數達到其最終值時,迴圈終止。
-
必須在每次疊代期間更新計數器變數。這通常通過變數遞增來完成。
前面已經介紹過,通過使用 while 迴圈來建立計數控制迴圈的方法,但是,由於計數控制迴圈實在太常用,所以 C++ 又提供了另外一種特別適合計數控制的迴圈,即所謂的
for 迴圈。
for 迴圈專門用於初始化、測試和更新計數器變數。以下是 for 迴圈的格式:
for (初始化;測試;更新)
{
語句;
語句;
//根據需要在此放置更多語句
}
與前面介紹的其他迴圈一樣,如果迴圈體中只有一個語句,則可以省略大括號。
for 迴圈的第一行是迴圈頭。在關鍵詞 for 之後,括號內有 3 個表示式,用分號分隔(注意第 3 個表示式之後沒有分號):
-
第一個表示式是初始化表示式,它通常用於將計數器初始化為其起始值。這是迴圈執行的第一個動作,只做一次。
-
第二個表示式是測試表示式。它以與 while 和 do-while 迴圈中的測試表示式相同的方式測試條件,並控制迴圈的執行。只要這個條件為 true,for 迴圈的主體將重複。與 while 迴圈一樣,for 迴圈也是一個預測試迴圈,因此它在每次疊代之前判斷測試表示式。
-
第三個表示式是更新表示式。它在每次疊代結束時執行。通常,這是一個遞增迴圈計數器變數的語句。
以下是一個簡單的 for 迴圈範例,將列印“Hello”字串 5 次:
for (count = 1; count <= 5; count++)
cout << "Hello" << endl;
在該迴圈中,初始化表示式為 count = 1,測試表示式為“count <= 5”,更新表示式為 count++。迴圈的主體只有一個語句,即 cout 語句。圖 1 說明了迴圈執行過程中發生的事件順序。
圖 1 for 迴圈執行過程中事件發生的順序