Главная chevron_right Структура chevron_right Операторы сравнения chevron_right < (less than)

< (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 гарантирует, что индекс не выйдет за границы.
  • Управление моторами и сервоприводами: ограничить движение, пока угол не достиг заданной позиции.
  • Обработка показаний датчиков: включить предупреждение, если температура ниже нуля или освещённость упала ниже порога.

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