< (less than)
Оператор < возвращает true, если левый операнд строго меньше правого — незаменим в условиях if, циклах for и while для проверки пороговых значений.
Полная статья
Описание
Оператор < («меньше») сравнивает два значения и возвращает true, если левый операнд строго меньше правого, и false в противном случае. Это один из базовых операторов сравнения, без которого не обходится почти ни один скетч: он используется в условиях if, циклах while и for, а также везде, где нужно отреагировать на то, что какая-то величина не достигла порогового значения.
Технически Arduino позволяет сравнивать переменные разных типов, но делать это стоит осторожно. Особенно опасно смешивать знаковые и беззнаковые типы: например, сравнение знакового int с беззнаковым byte может дать неожиданный результат из-за неявного приведения типов. Лучше всего сравнивать переменные одного типа.
Синтаксис
x < y; // is true if x is smaller than y and it is false if x is equal or bigger than y
Параметры
x: переменная в левой части выражения. Допустимые типы данных:int,float,double,byte,short,long.y: переменная или константа в правой части выражения. Допустимые типы данных:int,float,double,byte,short,long.
Возвращаемое значение
Оператор возвращает значение типа bool: true, если левый операнд меньше правого, и false во всех остальных случаях — включая равенство.
Пример кода
if (x < y) { // проверяет, меньше ли x, чем y
// выполнить действие только если результат сравнения истинен
}
Практические замечания
- Отрицательные числа всегда меньше положительных. Это очевидно для
intиlong, но беззнаковые типы (byte,unsigned int) не могут хранить отрицательные значения — при попытке записать туда отрицательное число произойдёт переполнение, и результат сравнения окажется неожиданным. - Смешивание знаковых и беззнаковых типов — частый источник ошибок. Например, если
xимеет типintи равен-1, аy— типbyteи равен0, то после неявного приведения-1может оказаться очень большим беззнаковым числом, и выражениеx < yвернётfalseвместо ожидаемогоtrue. - Числа с плавающей точкой (
float,double) сравниваются корректно, но из-за погрешностей вычислений два теоретически равных значения могут слегка отличаться. Если важно проверить «меньше или равно», используйте<=или сравнивайте с допуском. - В циклах
forоператор<чаще всего используется как условие продолжения:for (int i = 0; i < 10; i++)— цикл выполнится ровно 10 раз (приiот 0 до 9 включительно). - Для отладки выводите оба операнда в Serial Monitor перед сравнением — это сразу покажет, ожидаемые ли значения участвуют в проверке.
Где применяется
- Пороговые условия: проверить, не упало ли напряжение на аккумуляторе ниже допустимого уровня (
voltage < 3.3). - Циклы обхода массивов: стандартный счётчик
i < arraySizeгарантирует, что индекс не выйдет за границы. - Управление моторами и сервоприводами: ограничить движение, пока угол не достиг заданной позиции.
- Обработка показаний датчиков: включить предупреждение, если температура ниже нуля или освещённость упала ниже порога.