if

Оператор if проверяет условие и выполняет блок кода, только если оно истинно (true); иначе блок пропускается и скетч идёт дальше.

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

Описание

if Оператор if — основа любой логики в скетче. Он проверяет условие в скобках и выполняет следующий блок кода только в том случае, если это условие истинно (true). Если условие ложно (false), блок пропускается и программа продолжается дальше.

Синтаксис

    if (condition) {
      //оператор(ы)
    }

Параметры

condition: логическое выражение, результат которого равен true или false. Обычно это сравнение двух значений с помощью операторов ==, !=, <, >, <=, >=.

Пример кода

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

    if (x > 120) digitalWrite(LEDpin, HIGH);

    if (x > 120)
    digitalWrite(LEDpin, HIGH);

    if (x > 120) {digitalWrite(LEDpin, HIGH);}

    if (x > 120) {
      digitalWrite(LEDpin1, HIGH);
      digitalWrite(LEDpin2, HIGH);
    }
    // все верно

Операторы сравнения

Внутри круглых скобок if используются операторы сравнения:

  • x == yx равно y
  • x != yx не равно y
  • x < yx меньше y
  • x > yx больше y
  • x <= yx меньше или равно y
  • x >= yx больше или равно y

Примечания и предупреждения

Самая частая ошибка: = вместо ==

Один знак равенства (=) — это оператор присваивания, а не сравнения. Если написать if (x = 10) вместо if (x == 10), произойдёт следующее:

  1. Значение 10 присваивается переменной x — теперь x содержит 10.
  2. Результат выражения присваивания равен присвоенному значению, то есть 10.
  3. Любое ненулевое число C++ считает TRUE, поэтому условие if (x=10) всегда истинно — независимо от того, что было в x до этого.

Итог: if (x = 10) будет выполняться всегда, а переменная x получит значение 10 как побочный эффект — оба результата нежелательны.

Правильный вариант — двойной знак равенства if (x == 10): он только проверяет, равно ли x значению 10, и возвращает true лишь тогда, когда x действительно равно 10.

Совет: Чтобы защититься от этой ошибки, некоторые разработчики пишут константу слева: if (10 == x). Тогда случайный одиночный = вызовет ошибку компиляции, потому что присвоить значение литералу нельзя.

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

  • Реакция на кнопку: проверить, нажата ли кнопка (digitalRead вернул HIGH), и включить светодиод.
  • Пороговое срабатывание: сравнить показание аналогового датчика с порогом и запустить мотор или сигнал.
  • Защита от выхода за диапазон: убедиться, что значение счётчика не превысило максимум, прежде чем увеличивать его.
  • Выбор режима работы: в зависимости от состояния флага выбирать разную логику внутри loop().

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

  • Если тело if содержит больше одной инструкции, всегда используйте фигурные скобки {} — это исключает трудноуловимые ошибки при редактировании кода.
  • if не блокирует выполнение программы: если условие ложно, скетч немедленно переходит к следующей строке.
  • Условие может быть составным: несколько проверок объединяют операторами && (логическое И) и || (логическое ИЛИ).
  • Если результат if неожиданный, выведите значение проверяемой переменной через Serial.println() — часто оказывается, что переменная содержит не то, что ожидалось.
  • Помните: любое ненулевое значение в условии считается true, а ноль — false. Это важно, если вы проверяете не сравнение, а само значение переменной.

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