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

Полезные материалы