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

Метод overflowing_sub

Метод overflowing_sub выполняет вычитание одного числа из другого и возвращает кортеж из двух значений: результата вычитания и логического флага, указывающего, произошло ли переполнение. Параметром метод принимает число, которое нужно вычесть из текущего значения. Если переполнения не произошло, флаг равен false, а результат соответствует обычному вычитанию. Если же переполнение произошло, флаг равен true, а результат представляет собой значение, полученное с учётом переполнения (по модулю 2³²).

Синтаксис

i32.overflowing_sub(other)

Пример

Давайте вычтем число 5 из числа 10 и посмотрим на результат:

fn main() { let res = 10i32.overflowing_sub(5); println!("{:?}", res); }

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

(5, false)

Пример

Давайте вычтем число 1 из минимального значения i32 и посмотрим, как проявится переполнение:

fn main() { let res = i32::MIN.overflowing_sub(1); println!("{:?}", res); }

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

(2147483647, true)

Как видно из примера, при переполнении флаг равен true, а результат стал максимальным положительным числом i32.

Пример

Давайте используем флаг переполнения для обработки ситуации и выведем разные сообщения:

fn main() { let (res, overflow) = i32::MIN.overflowing_sub(10); if overflow { println!("Overflow! Result: {}", res); } else { println!("No overflow. Result: {}", res); } }

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

Overflow! Result: 2147483637

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

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