<= (less than or equal to)
Оператор <= возвращает true, если левый операнд меньше правого или равен ему — граничное значение включается в условие.
Полная статья
Описание
Оператор <= («меньше или равно») сравнивает два значения и возвращает true, если левый операнд меньше правого или равен ему. В противном случае возвращается false.
Технически Arduino позволяет сравнивать переменные разных типов данных, но делать это не рекомендуется: смешение знаковых и беззнаковых типов (например, int и byte) или целых с плавающей точкой может дать неожиданный результат из-за неявного приведения типов. Безопаснее всего сравнивать переменные одного и того же типа.
Синтаксис
x <= y; // is true if x is smaller than or equal to y and it is false if x is greater than y
Параметры
x: переменная, стоящая слева от оператора. Допустимые типы данных:int,float,double,byte,short,long.y: переменная или константа, стоящая справа от оператора. Допустимые типы данных:int,float,double,byte,short,long.
Пример кода
if (x <= y) { // проверяет, что x меньше или равно y
// выполняется только если результат сравнения истинен
}
Примечания и предупреждения
Отрицательные числа всегда меньше положительных, поэтому выражения вида x <= 0, где x — знаковый тип, будут вести себя ожидаемо. Однако если x объявлен как беззнаковый тип (byte, unsigned int и т. п.), отрицательные значения в нём невозможны, и результат сравнения может вас удивить.
Где применяется
- Ограничение диапазона — проверить, что показание датчика не вышло за допустимый предел:
if (sensorValue <= threshold). - Счётчики в циклах — классическое
for (int i = 0; i <= 9; i++)перебирает значения от 0 до 9 включительно. - Управление яркостью или скоростью — постепенно увеличивать ШИМ-сигнал, пока он не достигнет максимума:
while (brightness <= 255). - Сторожевые условия — убедиться, что уровень заряда батареи ещё не опустился до критической отметки.
Практические замечания
- Оператор
<=включает граничное значение: еслиx == y, условие считается истинным. Если граница не должна входить в диапазон, используйте строгое<. - При сравнении
floatиdoubleучитывайте погрешность вычислений с плавающей точкой: два значения, которые кажутся равными, могут отличаться на доли единицы последнего разряда, и условие<=сработает не так, как ожидается. - Смешивание знакового
intи беззнаковогоbyteв одном выражении может привести к тому, что отрицательныйintокажется «больше» любогоbyte— компилятор приведёт его к беззнаковому типу. - Результат оператора сравнения — логическое значение (
true/false), которое можно сохранить в переменную типаboolили сразу использовать вif,while,for. - Если сравнение в
if-условии работает не так, как ожидается, выведите оба операнда черезSerial.println()перед проверкой — это быстро покажет, какие значения реально поступают в выражение.