Главная chevron_right Структура chevron_right Составные операторы chevron_right *= (compound multiplication)

*= (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, а yint, результат будет float. Если оба целые, следите за диапазоном заранее.
  • Читаемость кода. x *= 2 нагляднее показывает намерение «удвоить x», чем x = x * 2 — пользуйтесь этим для ясности.
  • Отладка. Если результат выглядит неправильно, выведите промежуточные значения через Serial.println() до и после операции, чтобы убедиться, что переполнения нет.

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