continue
continue пропускает оставшийся код текущей итерации и сразу переходит к следующей — удобная замена вложенным if/else для фильтрации значений в цикле.
Полная статья
Описание
Оператор continue прерывает выполнение текущей итерации цикла (for, while или do...while) и сразу переходит к проверке условия, после чего запускает следующую итерацию, если условие по-прежнему выполняется. Код, написанный ниже continue внутри тела цикла, при этом не выполняется.
Это удобно, когда нужно отфильтровать часть значений или пропустить определённые случаи, не ломая логику всего цикла. Вместо вложенных if/else можно написать if (...) continue; — и код становится чище и понятнее.
Пример кода
Следующий код записывает значение от 0 до 255 в PWMpin, но пропускает значения в диапазоне от 41 до 119.
for (int x = 0; x <= 255; x ++) {
if (x > 40 && x < 120) { // создаём пропуск в значениях
continue;
}
analogWrite(PWMpin, x);
delay(50);
}
Где применяется
- Фильтрация диапазонов — пропустить значения ШИМ, которые дают нежелательный эффект (дребезг, мерцание, шум).
- Обработка данных с датчиков — игнорировать показания, выходящие за допустимые пределы, не прерывая цикл опроса.
- Парсинг массивов — пропускать элементы, не удовлетворяющие условию, и обрабатывать только нужные.
Практические замечания
continueработает только для ближайшего охватывающего цикла. Если циклы вложены, он пропускает итерацию именно того цикла, внутри которого стоит.- В цикле
forпослеcontinueсначала выполняется выражение-шаг (например,i++), и лишь затем проверяется условие — счётчик не «застревает». - В циклах
whileиdo...whileпослеcontinueуправление сразу передаётся на проверку условия. - Не путайте
continueсbreak:breakполностью выходит из цикла, аcontinueтолько пропускает текущую итерацию. - Если условие для
continueникогда не снимается, можно случайно создать бесконечный цикл — проверьте, что счётчик или флаг изменяется независимо от пропуска итерации.