Причина в том, что оператор continue
будет замыкать инструкции, которые следуют за ним в теле цикла. Поскольку способ, которым вы написали цикл while
, содержит инструкцию increment, следующую за инструкцией continue
, она замыкается. Вы можете решить эту проблему, изменив цикл while
.
Многие текстовые книги утверждают, что:
for (i = 0; i < N; ++i) {
/*...*/
}
эквивалентно:
i = 0;
while (i < N) {
/*...*/
++i;
}
Но на самом деле это действительно так:
j = 0;
while ((i = j++) < N) {
/*...*/
}
Или, чтобы быть немного более педантичным:
i = 0;
if (i < 10) do {
/*...*/
} while (++i, (i < 10));
Они более эквивалентны, так как теперь, если тело из while
имеет continue
, приращение все еще происходит, как и в for
. Последняя альтернатива выполняет только приращение после завершения итерации, как и for
(первый выполняет приращение перед итерацией, откладывая сохранение в i
до итерации).
Вы, кажется, используете Mac. Меню находится в верхней части экрана (как всегда на Mac), а не является частью окна.