Оператор цикла forуправляющий оператор языка Си, реализующий выполнение цикла в алгоритме.
Этот оператор очень удобен для представления счетных циклов, однако он может использоваться и для итерационных и поисковых циклов.
Синтаксис оператора цикла for определяется следующим образом:
for (выражение1; выражение2; выражение3)
    оператор
Рис. 1.  Блок-схема цикла for
Цикл for используется для описания определенных действий для инициализации переменных цикла, циклического повторения тела цикла и изменения значений его переменных.
Выражение2 цикла for всегда используется в качестве условия его окончания. Выражение1 часто применяется для инициализации переменных, а выражение3 для их изменения. Выражение1 вычисляется один раз при входе в цикл; выражение2 используется многократно как условие окончания; выражение3 вычисляется многократно после выполнения операторов тела цикла. Оператор for эквивалентен следующей последовательности операторов:
выражение1;
while (выражение2)
{
   оператор
   выражение3;
}
Преимущество синтаксиса оператора цикла for по сравнению с синтаксисом оператора цикла while заключается в том, что управляющие выражения цикла собраны вместе, что повышает удобочитаемость программы.
Пример 1
i = 0;
for (num = 100 ; num > 0; num -= 10)
   tens[i++] = num;
Любое из трех или все три выражения в операторе for могут отсутствовать, однако разделяющие их символы ; опускать нельзя. Если опущено выражение2, то оно считается по умолчанию истинным.
Циклы for могут быть вложенными. Их вложение часто используется для обработки многомерных массивов. Более того, любые из циклов языка Си могут быть вложены друг в друга, например цикл while внутри цикла for, цикл for внутри цикла do-while и т.д.
Пример 2
/* Сумма столбцов 0, 1, 2 и 3 размещается в столбце 4 */
cols =5;
for (r = 0; r<rows; r++)        /* для каждой строки */
    for (c = 0; c<cols-1; c++)  /* для каждого столбца */
        table[r][cols - 1] += table[r][c];
Пример 3
/*печатает 25 элементов массива */
for (i = 0; i<25; i++)
     printf ("%d ", ray[i]);
Пример 4
/* суммирует элементы массива */
sum = 0;
for (i = 0; i<max; )
    sum += quantity[i++];
Пример 5
/* бесконечный цикл */
for (;;)
   doinit();