-= (compound subtraction)
Оператор -= сокращает запись вычитания: x -= y делает то же самое, что x = x - y, но короче — работает с int, float, byte, long и другими числовыми типами.
Полная статья
Описание
Оператор -= — это сокращённая форма записи вычитания. Вместо того чтобы писать x = x - y, можно написать x -= y — результат одинаковый, но код становится короче и читается естественнее, особенно когда имя переменной длинное.
Оператор работает с целыми и дробными числами, поэтому подходит как для счётчиков и таймеров, так и для вычислений с плавающей точкой.
Синтаксис
x -= y; // equivalent to the expression x = x - y;
Параметры
x: переменная, из которой вычитается значение. Поддерживаемые типы:int,float,double,byte,short,long.y: то, что вычитается — переменная или константа. Поддерживаемые типы:int,float,double,byte,short,long.
Пример кода
x = 20;
x -= 2; // x теперь содержит 18
Где применяется
- Счётчик с уменьшением — например, отсчёт оставшихся попыток или секунд до события.
- Управление яркостью — плавное уменьшение значения ШИМ при затухании светодиода.
- Навигация и позиционирование — уменьшение координаты при движении в одну сторону.
- Вычисление разницы накопленным итогом — когда нужно последовательно вычитать несколько слагаемых из общей суммы.
Практические замечания
- Результат записывается в
x, поэтомуxобязательно должен быть переменной, а не константой или литералом. - Следите за переполнением: если
xимеет типbyte(диапазон 0–255) и вы вычтете из нуля единицу, получите 255, а не −1. Для знаковых значений используйтеintилиlong. - Если
xиyимеют разные типы, Arduino выполнит неявное приведение типов по стандартным правилам C++. Чтобы избежать неожиданностей, старайтесь использовать переменные одного типа или явно приводите тип через(тип). - Для
floatиdoubleпомните о погрешности представления: многократное вычитание маленьких дробных значений может накапливать ошибку округления. - Оператор
-=не блокирует выполнение программы — это обычная арифметическая операция, которая выполняется мгновенно.