Попробуйте откомпилировать и запустить программу. Поиграйте с ней — окажется, что выиграть у нее стало весьма трудно!

Неполные формы записи оператора цикла

Любую из трех составных частей оператора for можно опустить, только обязательно надо сохранять точки с занятой между ними. Допускается запись

for( ; i < 5; i ++ )

(перед первым циклом никаких предварительных действий не происходит) или

for ( i = 1; i < 5; )

В последнем случае значение переменной i может увеличиваться внутри цикла, в его теле:

for( i = 1; i < 5; ) i ++;

Можно записать и так: » for( i = 1; ; i ++ )

Тогда считается, что значением неуказанного условного выражения всегда будет true, то есть подобный цикл будет выполняться бесконечное число раз, и может быть прерван только оператором break.

Всегда надо очень тщательно проверять условие прекращения цикла. Если оно опущено или всегда равно true, то программа может зациклиться (безостановочно выполнять одно и то же действие). Прервать работу такой программы бывает довольно трудно — не исключено и зависание Windows.

Можно также опускать две или даже все части оператора for. Например, профессиональными программистами нередко применяется такая форма оператора цикла:

for (; ; )

{

// действия, среди которых обязательно должен быть оператор break

)

Такой цикл может повторяться бесконечное число раз. Он удобен, когда точно не известно, когда следует остановить работу for, а в теле имеется несколько условных операторов, самостоятельно определяющих момент остановки и необходимость выполнения оператора break.

161

6 Зак. 245