return

Оператор return завершает функцию и возвращает значение вызывающему коду — или просто прерывает void-функцию досрочно, без возврата значения.

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

Описание

Оператор return прерывает выполнение текущей функции и передаёт управление обратно в то место, откуда она была вызвана. Если функция должна что-то вернуть — число, флаг, результат вычисления — return передаёт это значение вместе с управлением.

Функции типа void могут использовать return; без значения, чтобы досрочно прервать выполнение при выполнении какого-либо условия. Функции с любым другим возвращаемым типом обязаны вернуть значение совместимого типа.

Синтаксис

  • return;
  • return value;

Параметры

value: любая переменная или константа подходящего типа. Тип должен совпадать с типом, объявленным в сигнатуре функции.

Пример кода

Функция сравнивает показания датчика с пороговым значением и возвращает результат:

    int checkSensor() {
      if (analogRead(0) > 400) {
        return 1;
      }
      else {
        return 0;
      }
    }

Отладочный приём с return

Оператор return удобно использовать при отладке: если вставить его в начало подозрительного блока кода, функция будет выходить раньше, не выполняя остальные инструкции. Это позволяет временно «отключить» часть логики без комментирования десятков строк.

    void loop() {
      // блестящая идея для проверки здесь

      return;

      // остальная часть нерабочего скетча
      // этот код никогда не будет выполнен
    }

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

  • Защитные проверки в начале функции — если входной параметр некорректен, сразу выйти через return, не выполняя остальной код.
  • Возврат результата вычисления — функция считает значение и возвращает его в loop() или другую функцию для дальнейшей обработки.
  • Ранний выход из конечного автомата — если состояние не изменилось, незачем выполнять всю функцию целиком.
  • Временное отключение кода при отладке — вставить return; перед проблемным участком, чтобы проверить остальную часть скетча.

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

  • Функция, объявленная как void, может содержать return; без значения — это нормально и иногда очень удобно.
  • Если функция объявлена с конкретным типом (например, int или bool), компилятор потребует, чтобы все пути выполнения заканчивались return с подходящим значением. Забытый return в одной из ветвей if — частая причина предупреждений при компиляции.
  • После return весь код в той же функции ниже этой строки не выполняется. Следите за порядком проверок, чтобы не пропустить важную логику.
  • Возвращаемое значение можно сразу использовать в условии: if (checkSensor() > threshold) — нет необходимости сохранять его в промежуточную переменную, если оно нужно только один раз.
  • Не путайте return с break: break выходит из цикла или switch, а return завершает всю функцию целиком.

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