for
陳述式 (C)
for
陳述式可讓您依指定的次數重複執行陳述式或複合陳述式。 for
陳述式的主體會執行零次或多次,直到的選擇性條件變成 false 為止。 您可以在 for
陳述式內使用選擇性的運算式,在 for
陳述式的執行期間進行初始化和變更值。
語法
iteration-statement
:
for
(
init-expression
opt ;
cond-expression
opt ;
loop-expression
opt )
statement
for
陳述式的執行如下所述:
評估
init-expression
(如果有的話)。 這會指定迴圈的初始化。init-expression
的類型沒有限制。評估
cond-expression
(如果有的話)。 此運算式必須是算術或指標類型。 在每個反覆項目之前進行評估。 有三個可能的結果:如果
cond-expression
為true
(非零),則會執行statement
,然後再評估loop-expression
(如果有的話)。loop-expression
會在每個反覆項目之後評估。 其類型沒有限制。 副作用將會依順序執行。 接著會從cond-expression
的評估重新開始此程序。如果省略
cond-expression
,則cond-expression
會被視為 true,並依如前面段落中所述的方式繼續執行。 沒有for
引數的cond-expression
陳述式只有在陳述式主體內的break
或return
陳述式執行時,或goto
(移至for
陳述式主體外部的標籤陳述式) 時才會終止。如果
cond-expression
為false
(0),for
陳述式會終止,而控制權會傳遞給程式中的下一個陳述式。
當陳述式主體內的 for
、break
或 goto
陳述式執行時,return
陳述式也會終止。 continue
迴圈中的 for
陳述式會造成對於 loop-expression
的評估。 當 for
迴圈內部的 break
陳述式執行時,不會評估也不會執行 loop-expression
。 此陳述式
for( ; ; )
是產生無限迴圈的慣用方法,其只能使用 break
、goto
或 return
陳述式來結束。
範例
這個範例說明 for
陳述式:
// c_for.c
int main()
{
char* line = "H e \tl\tlo World\0";
int space = 0;
int tab = 0;
int i;
int max = strlen(line);
for (i = 0; i < max; i++ )
{
if ( line[i] == ' ' )
{
space++;
}
if ( line[i] == '\t' )
{
tab++;
}
}
printf("Number of spaces: %i\n", space);
printf("Number of tabs: %i\n", tab);
return 0;
}
輸出
Number of spaces: 4
Number of tabs: 2