== (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);— это удобно, если одно и то же условие нужно проверять несколько раз.