*= (compound multiplication)
Оператор *= умножает переменную на число или другую переменную и сразу сохраняет результат: x *= y — это краткая запись x = x * y.
Полная статья
Описание
Оператор составного умножения *= позволяет умножить переменную на число или другую переменную и сразу сохранить результат. Вместо того чтобы писать 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 = 2;
x *= 3; // x теперь равен 6
Практические замечания
- Переполнение типа. Если результат умножения выходит за пределы диапазона типа переменной
x, значение «переполнится» и окажется неожиданным. Например, дляintмаксимум — 32 767: умножение больших чисел лучше делать с типомlong. - Целочисленное умножение. Когда оба операнда — целые числа (
int,longи т. д.), результат тоже будет целым. Дробная часть отбрасывается. Если нужна точность, используйтеfloatилиdouble. - Порядок типов. Если
x— этоfloat, аy—int, результат будетfloat. Если оба целые, следите за диапазоном заранее. - Читаемость кода.
x *= 2нагляднее показывает намерение «удвоить x», чемx = x * 2— пользуйтесь этим для ясности. - Отладка. Если результат выглядит неправильно, выведите промежуточные значения через
Serial.println()до и после операции, чтобы убедиться, что переполнения нет.