РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
330 of 1245 menu

Метод wrapping_mul

Метод wrapping_mul выполняет умножение двух чисел типа i32. В отличие от обычного умножения, при переполнении (выходе за границы диапазона) метод не вызывает панику, а выполняет циклический сдвиг (wrapping), возвращая значение, которое получается в результате отбрасывания старших битов. Параметром метод принимает второе число для умножения.

Синтаксис

i32::wrapping_mul(self, rhs: i32) -> i32

Пример

Давайте умножим число 10 на 20 без переполнения:

fn main() { let a: i32 = 10; let b: i32 = 20; let res = a.wrapping_mul(b); println!("{}", res); }

Результат выполнения кода:

200

Пример

Давайте рассмотрим случай переполнения. Умножим максимальное значение i32::MAX на 2. Обычное умножение вызвало бы панику, но wrapping_mul вернёт циклический результат:

fn main() { let a: i32 = i32::MAX; let b: i32 = 2; let res = a.wrapping_mul(b); println!("{}", res); }

Результат выполнения кода:

-2

Пример

Давайте умножим отрицательное число -5 на 3:

fn main() { let a: i32 = -5; let b: i32 = 3; let res = a.wrapping_mul(b); println!("{}", res); }

Результат выполнения кода:

-15

Смотрите также

  • метод wrapping_add,
    который выполняет сложение с циклическим переполнением
  • метод wrapping_sub,
    который выполняет вычитание с циклическим переполнением
  • метод saturating_mul,
    который выполняет умножение с насыщением
  • метод checked_mul,
    который возвращает None при переполнении
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить