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 == y—xравноyx != y—xне равноyx < y—xменьшеyx > y—xбольшеyx <= y—xменьше или равноyx >= y—xбольше или равноy
Примечания и предупреждения
Самая частая ошибка: = вместо ==
Один знак равенства (=) — это оператор присваивания, а не сравнения. Если написать if (x = 10) вместо if (x == 10), произойдёт следующее:
- Значение 10 присваивается переменной
x— теперьxсодержит 10. - Результат выражения присваивания равен присвоенному значению, то есть 10.
- Любое ненулевое число 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. Это важно, если вы проверяете не сравнение, а само значение переменной.