Попробуйте откомпилировать и запустить программу. Поиграйте с ней — окажется, что выиграть у нее стало весьма трудно!
Неполные формы записи оператора цикла
Любую из трех составных частей оператора 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