break

break немедленно выходит из цикла или блока switch — удобно для досрочного завершения перебора или чтобы не «провалиться» в следующий case.

Полная статья

Описание

break позволяет досрочно выйти из цикла for, while или do...while, не дожидаясь, пока условие завершения станет ложным. Кроме того, break обязательно используется внутри switch...case, чтобы остановить выполнение после подходящей ветки и не «провалиться» в следующие варианты.

Когда программа встречает break, она немедленно покидает текущий цикл или блок switch и продолжает выполнение со следующей строки после закрывающей фигурной скобки. Если циклы вложены друг в друга, break прерывает только тот цикл, внутри которого он находится, — внешний цикл продолжает работать.

Где применяется

  • Поиск в массиве — нашли нужный элемент, дальше перебирать нет смысла.
  • Ожидание события — цикл крутится в ожидании показания датчика, и как только оно превысило порог, работа цикла прекращается.
  • Меню на switch — после обработки выбранного пункта break не даёт коду «упасть» в следующую ветку case.
  • Аварийный выход — если в процессе итерации обнаружена ошибка или критическое состояние, break позволяет немедленно покинуть цикл и обработать ситуацию.

Пример кода

В следующем примере цикл читает значения датчика и прерывается, как только показание превышает пороговое значение.

    int threshold = 40;
    for (int x = 0; x < 255; x++) {
      analogWrite(PWMpin, x);
      sens = analogRead(sensorPin);
      if (sens > threshold) {     // выйти при срабатывании датчика
        x = 0;
        break;
      }
      delay(50);
    }

Практические замечания

  • break прерывает только ближайший охватывающий цикл или switch. Для выхода из нескольких вложенных уровней сразу потребуется дополнительная логика (например, флаговая переменная).
  • Внутри switch отсутствие break в конце ветки case — распространённая ошибка: выполнение «проваливается» в следующий case, что почти всегда нежелательно.
  • Если break стоит внутри цикла for, счётчик цикла не получит финального значения — он остановится на том, на котором был в момент прерывания. Учитывайте это, если используете переменную-счётчик после цикла.
  • Злоупотреблять break не стоит: если условие выхода можно аккуратно выразить в заголовке цикла, код будет читаться лучше. Но для реакции на внешние события или нестандартные ситуации break — вполне нормальный инструмент.

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