Работа оператора continue чем-то похожа на работу оператора break. Но вместо форсированного окончания continue переходит к следующей итерации цикла, пропуская оставшийся код цикла. Например, следующая процедура выводит только положительные числа:
do {
scanf("%d", &x);
if(x<0) continue;
printf("%d ", x);
} while(x!=100);
В циклах while и do/while оператор continue вызывает переход к проверке условия и затем продолжает работу цикла. В случае for выполняется часть увеличения, затем проверяется условие и, наконец, выполняется само тело цикла. Предыдущий пример может быть изменен для вывода только 100 чисел следующим образом:
for(t=0; t<100; ++t)
{
scanf ("%d", &x);
if (x<0) continue;
printf ("%d ", x);
}
В следующем примере оператор continue используется для ускорения выхода из цикла путем форсирования проверки, выполненной ранее:
void code(void)
{
char done, ch;
done = 0;
while (!done) {
ch = getchar();
if (ch == '.') {
done = 1; continue;
}
putchar(ch+1); /* сдвиг алфавита на одну позицию */
}
}
Можно использовать данную функцию для кодирования сообщений, сдвигая все символы на 1 вверх, то есть 'a' станет 'b'. Функция завершает работу при обнаружении точки, и вывода на экран символа, соответствующего точке, не происходит, поскольку благодаря continue выполнение, минуя оператор вывода, переходит к условию проверки, которое обнаруживает, что done истинно, и вызывает выход.