Главная chevron_right Переменные и константы chevron_right Константы chevron_right true | false

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-кода.

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