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

== (equal to)

Оператор == сравнивает два значения и возвращает true, если они равны — чаще всего используется в if, while и for.

Полная статья

Описание

Оператор == — это оператор сравнения на равенство. Он проверяет, совпадают ли левый и правый операнды, и возвращает true, если они равны, или false в противном случае. Чаще всего его используют в условных конструкциях if, while и for, чтобы принять решение на основе текущего значения переменной.

Технически оператор допускает сравнение переменных разных типов данных, однако на практике это может дать неожиданный результат: например, сравнение знакового int с беззнаковым byte может вести себя не так, как вы ожидаете, из-за неявного приведения типов. Чтобы избежать таких сюрпризов, сравнивайте переменные одного типа.

Частая ошибка: не путайте == с =. Одиночный знак = — это присваивание, а == — сравнение. Написав if (x = 5) вместо if (x == 5), вы не сравните x с пятью, а запишете в x значение 5, и условие всегда окажется истинным.

Синтаксис

x == y; // is true if x is equal to y and it is false if x is not equal to y

Параметры

  • x: переменная в левой части сравнения. Допустимые типы данных: int, float, double, byte, short, long.
  • y: переменная или константа в правой части сравнения. Допустимые типы данных: int, float, double, byte, short, long.

Возвращаемое значение

Результат имеет тип bool: true, если операнды равны, и false, если они различаются. Этот результат можно использовать напрямую в условии или сохранить в переменную типа bool.

Пример кода

    if (x == y) { // проверяет, равно ли x значению y
      // выполняется только если результат сравнения истинен
    }

Где применяется

  • Проверка состояния кнопки: сравнить значение, считанное с цифрового пина, с константой HIGH или LOW.
  • Конечный автомат: сравнить текущее состояние программы с нужным, чтобы перейти к следующему шагу.
  • Ожидание нужного символа из Serial: проверить, совпадает ли принятый байт с заданным символом-командой.
  • Счётчик событий: проверить, достиг ли счётчик нужного значения, чтобы выполнить действие.

Практические замечания

  • Сравнение float и double на точное равенство ненадёжно: из-за погрешностей вещественной арифметики два «одинаковых» числа могут отличаться на доли единицы в последнем разряде. Вместо x == y для вещественных чисел используйте проверку abs(x - y) < epsilon, где epsilon — допустимая погрешность.
  • При сравнении знакового и беззнакового типов компилятор может неявно привести один из них к другому, что иногда меняет результат. Если видите предупреждение компилятора о знаковости — не игнорируйте его.
  • Оператор == не работает для сравнения строк типа String в смысле содержимого: для этого используйте метод .equals(). Для C-строк (char[]) применяйте strcmp().
  • Результат сравнения можно сохранить: bool result = (x == y); — это удобно, если одно и то же условие нужно проверять несколько раз.

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