為陳述式 (C)
for 陳述式可讓您重複執行陳述式或複合陳述式依指定的次數。 for 陳述式的主體中執行一次或多次,直到的選擇性條件變成 false。 您可以使用 for 陳述式內的任意運算式在 for 陳述式的執行期間初始化和變更值。
語法
- 反覆運算陳述式:
for ( init-expression 選取 ; cond-expression選取 ; loop-expression 選取 為statement)
for 陳述式可執行如下:
init-expression,如果有的話,評估。 對於重複指定初始化。 沒有為 init-expression類型的限制。
cond-expression,如果有的話,評估。 這個運算式必須是算術或指標型別。 在每個反覆項目之前進行評估。 三個結果是可能的:
如果 cond-expression 為 true (非零), statement 執行;然後 loop-expression,如果有的話,評估。 loop-expression 在每個反覆項目之後評估。 沒有為其型別的限制。 副作用的順序執行。 處理來自 cond-expression的評估重新啟動。
如果省略 cond-expression ,則 cond-expression 會被視為 true 和執行就如前面段落中所述。 沒有 cond-expression 引數的 for 陳述式結束,只有在陳述式主體內的 break 或 return 陳述式時,或者,當 goto (為 for 陳述式主體以外的標記為陳述式) 時執行。
如果 cond-expression 是 false (0), for 陳述式結束和控制項的集合執行到程式的下一個陳述式。
當 break、 goto或 return 陳述式在陳述式主體內執行時, for 陳述式也會結束。 在 for 迴圈的 continue 陳述式造成 loop-expression 評估。 執行 break 陳述式會執行 for 迴圈中時, 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;
}
Output
Number of spaces: 4
Number of tabs: 2