Оператор for
(C)
Оператор for
позволяет повторить выполнение того или иного оператора или составного оператора заданное число раз. Тело оператора for
выполняется ноль или более раз, пока необязательное условие не примет значение false. Внутри оператора for
можно использовать необязательные выражения для инициализации и изменения значений во время выполнения этого оператора (for
).
Синтаксис
iteration-statement
:
for
(
init-expression
opt opt loop-expression
;
)
;
cond-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
. break
При выполнении инструкции внутри for
цикла loop-expression
не вычисляется или не выполняется. Оператор
for( ; ; )
— это обычный способ создания бесконечного цикла, который можно выйти только с оператором или goto
return
операторомbreak
.
Пример
В следующем примере показано использование оператора 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