Операторы сравнения
- 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.
! (логическое отрицание)
Если операндом является true, то после применения логического НЕ результатом будет false. Если же операнд до применения оператора НЕ является false, то после его применения — станет true. Другими словами, логический оператор НЕ меняет результат с true на false и наоборот. Он часто используется в условных выражениях
bool x = 0;
x = !x ;
Следует помнить, что логический оператор НЕ имеет очень высокий уровень приоритета.
Примеры использования логических операторов в составных условиях
- if (!x == y)
- if (val == 0 || val == 1)
- if (val == 0 || val == 1 || val == 2 || val == 3)
- if (val > 500 && val < 700)
- if (val > 100 && val < 255 && val != 200)
Свои ответы пишите в комментариях!