!= (not equal to)
Оператор != («не равно») возвращает true, если два значения различаются, и false, если они одинаковы — основа условий в if и while.
Полная статья
Описание
Оператор != («не равно») — один из базовых операторов сравнения. Он проверяет, отличается ли левый операнд от правого, и возвращает true, если они не равны, или false, если они одинаковы.
Технически можно сравнивать переменные разных типов данных, но делать это без явного приведения типов не стоит: компилятор выполнит неявное преобразование, и результат может оказаться неожиданным. Особенно осторожно нужно смешивать знаковые (int, long) и беззнаковые (byte) типы — отрицательное знаковое число при сравнении с беззнаковым может вести себя непредсказуемо. Безопаснее всего сравнивать переменные одного и того же типа.
Синтаксис
x != y; // is false if x is equal to y and it is true if x is not equal to y
Параметры
x: переменная, стоящая слева от оператора. Допустимые типы данных:int,float,double,byte,short,long.y: переменная или константа, стоящая справа от оператора. Допустимые типы данных:int,float,double,byte,short,long.
Пример кода
if (x != y) { // проверяет, не равно ли x значению y
// выполняется только если результат сравнения истинен
}
Где применяется
- Ожидание изменения состояния. Например, удерживать цикл
while, пока показание датчика не изменится относительно начального значения. - Фильтрация повторных событий. Выполнять действие только тогда, когда новое значение отличается от предыдущего — классический приём при опросе кнопок или энкодеров.
- Проверка результата функции. Многие функции возвращают специальное значение при ошибке (например,
-1); оператор!=позволяет отловить успешный результат:if (result != -1). - Конечные автоматы. Переходить в новое состояние только тогда, когда оно отличается от текущего.
Практические замечания
- Оператор
!=возвращает значение типаbool:trueилиfalse. Его удобно использовать напрямую в условияхif,whileи тернарном операторе. - При сравнении чисел с плавающей точкой (
float,double) будьте осторожны: из-за погрешности вычислений два значения, которые должны быть равны математически, могут оказаться чуть разными. Вместо прямого!=лучше проверять, что разность меньше допустимого порога:if (abs(x - y) > 0.001). - Не путайте
!=с оператором присваивания=. Написатьif (x = 5)вместоif (x != 5)— распространённая ошибка, которую компилятор не всегда считает ошибкой, но поведение скетча при этом будет неверным. - Если результат сравнения кажется неожиданным, выведите оба значения через
Serial.print()— это быстро покажет, что именно сравнивается и почему условие срабатывает или нет.