Главная chevron_right Структура chevron_right Операторы сравнения chevron_right != (not equal to)

!= (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() — это быстро покажет, что именно сравнивается и почему условие срабатывает или нет.

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