Найти тему
Алексей Кретов

Операторы сравнения и логические операторы

Оглавление
Графическое представаление логических операндов
Графическое представаление логических операндов

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

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

Следите, чтобы случайно не использовать знак простого равенства (например, if (x = 10)). Знак простого равенства – это оператор присваивания, и устанавливает значение х равное 10 (заносит значение 10 в переменную х). Вместо этого используйте знак двойного равенства (например, if (x == 10)), который является оператором сравнения и проверяет, х равен 10 или нет. Последнее из двух выражений будет истинно, только если х равен 10, но предыдущее выражение всегда верно.

Это связано с тем, что С вычисляет выражение if (x=10) следующим образом: значение 10 присваивается х (помним, что простой знак равенства – это оператор присваивания), таким образом, х теперь равен 10. Затем условный if вычисляет 10, которое уже равно ИСТИНА, так как любое число, неравное 0, равно ИСТИНА. Поэтому if (x=10) будет всегда иметь логическое значение ИСТИНА, которое не является желательным результатом, когда используется оператор if. Вдобавок, переменной х будет присвоено значение 10, что также не является желаемым действием.

Логические операторы

Логические операторы чаще всего используются в проверках условных операторов. Базовые сведения о логических операциях, смотрите в Википедии.

&& (логическое И)

Таблица истинности И
Таблица истинности И

Истина, если оба операнда истина (true).

if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) { // считывает состояние двух портов

// ...

}

Истина если оба порта вход/выхода HIGH

|| (логическое ИЛИ)

 Таблица истинности ИЛИ (||)
Таблица истинности ИЛИ (||)

Истина, если хотя бы один операнд истина, например:

if (x > 0 || y > 0) {

// ...

}

будет верно (истина) если x или y больше 0.

! (логическое отрицание)

Tтаблица истинности НЕ (!)
Tтаблица истинности НЕ (!)

Если операндом является true, то после применения логического НЕ результатом будет false. Если же операнд до применения оператора НЕ является false, то после его применения — станет true. Другими словами, логический оператор НЕ меняет результат с true на false и наоборот. Он часто используется в условных выражениях

bool x = 0;

x = !x ;

Следует помнить, что логический оператор НЕ имеет очень высокий уровень приоритета.

Примеры использования логических операторов в составных условиях

  1. if (!x == y)
  2. if (val == 0 || val == 1)
  3. if (val == 0 || val == 1 || val == 2 || val == 3)
  4. if (val > 500 && val < 700)
  5. if (val > 100 && val < 255 && val != 200)

Свои ответы пишите в комментариях!

Наука
7 млн интересуются