true | false
Логические константы true и false используются в условиях и переменных типа bool — любое ненулевое значение истинно, поэтому пишите if (flag), а не if (flag == true).
Полная статья
Описание
true и false — логические константы языка Arduino/C++. Они используются в условиях, циклах, переменных типа bool и функциях, которые возвращают результат «да/нет».
bool buttonPressed = true;
if (buttonPressed) {
digitalWrite(LED_BUILTIN, HIGH);
}
true
true означает логическую истину. Часто говорят, что true равно 1, и в простых случаях это действительно помогает понять поведение программы. Однако важно знать: в C++ любое ненулевое целое значение тоже считается истинным при вычислении условия — 1, 2, -1 и даже -200 будут восприняты как «истина». Это может удивить, если вы сравниваете значение с true через ==: например, 2 == true вернёт false, хотя 2 само по себе истинно. Поэтому для проверки булевых значений лучше писать просто if (flag), а не if (flag == true).
if (42) {
// это условие истинно
}
false
false означает логическую ложь. В числовом смысле ложным считается только 0 — и ничто другое. Именно поэтому сравнение if (x == false) надёжно только тогда, когда вы уверены, что переменная содержит именно 0, а не произвольное ненулевое значение.
if (0) {
// этот код не выполнится
}
Практические замечания
trueиfalseпишутся строчными буквами — это обязательное требование синтаксиса C++.TrueилиTRUEвызовут ошибку компиляции.- Константы
HIGH,LOW,INPUTиOUTPUTпишутся заглавными буквами, потому что это отдельные именованные константы Arduino, никак не связанные с булевой логикой напрямую. - Для переменных, которые хранят только два состояния — включено/выключено, нажато/отпущено, получено/не получено — используйте тип
bool: код становится понятнее, а компилятор лучше оптимизирует такие переменные. - Не сравнивайте булевые переменные с
trueчерез==без необходимости: записьif (isReady)читается естественнее и работает корректно даже в пограничных случаях. - Функции, которые возвращают
bool, удобно использовать прямо в условии:if (Serial.available())илиif (client.connected())— это идиоматичный стиль Arduino-кода.