for 迴圈中的控制結構和流程
for ([declaration-or-expression]; [expression2]; [expression3])
{
/* body of the loop */
}
在 for
迴圈中,迴圈條件有三個表示式,都是可選的。
- 第一個表示式
declaration-or-expression
初始化迴圈。它在迴圈開始時只執行一次。
Version >= C99
它可以是迴圈變數的宣告和初始化,也可以是通用表示式。如果它是宣告,則宣告的變數的範圍受 for
語句的限制。
Version < C99
C 的歷史版本只允許表示式,這裡,迴圈變數的宣告必須放在 for
之前。
- 第二個表示式
expression2
是測試條件。它首先在初始化後執行。如果條件是true
,則控制元件進入迴圈體。如果不是,它會在迴圈結束時轉移到迴圈體外部。隨後,在每次執行正文以及更新語句之後檢查此條件。當true
時,控制元件移回到迴圈體的開頭。該條件通常用於檢查迴圈體執行的次數。這是退出迴圈的主要方式,另一種方法是使用跳轉語句 。 - 第三個表示式
expression3
是更新語句。它在每次執行迴圈體後執行。它通常用於遞增變數保持迴圈體執行次數的計數,並且此變數稱為迭代器。
迴圈體的每個執行例項都稱為迭代。
例:
Version >= C99
for(int i = 0; i < 10 ; i++)
{
printf("%d", i);
}
輸出是:
0123456789
在上面的例子中,首先執行 i = 0
,初始化 i
。然後,檢查條件 i < 10
,其評估為 true
。控制元件進入迴圈體並列印 i
的值。然後,控制轉移到 i++
,將 i
的值從 0 更新為 1.然後,再次檢查條件,並繼續該過程。這一直持續到 i
的值變為 10.然後,條件 i < 10
評估 false
,之後控制元件移出迴圈。