Оператор for (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) считается истинным, и выполнение продолжается согласно описанию в предыдущем абзаце. Выполнение оператора 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