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

Метод saturating_sub

Метод saturating_sub выполняет вычитание одного числа из другого с насыщением. Если в результате вычитания должно произойти переполнение в сторону отрицательных значений, метод вернёт минимально возможное значение для типа i32, то есть i32::MIN. Параметром метод принимает число, которое нужно вычесть из текущего значения.

В отличие от обычного оператора -, который в режиме отладки вызывает панику при переполнении, метод saturating_sub гарантированно возвращает корректный результат, ограничивая его границами допустимого диапазона.

Синтаксис

i32::saturating_sub(self, rhs)

Пример

Давайте вычтем число 5 из числа 10. Оба значения находятся в допустимом диапазоне, поэтому результат будет обычным:

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

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

5

Пример

Давайте вычтем число 1 из минимального значения типа i32. В обычной ситуации это привело бы к переполнению, но метод saturating_sub вернёт минимальное значение:

fn main() { let a: i32 = i32::MIN; let b: i32 = 1; let res = a.saturating_sub(b); println!("{}", res); }

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

-2147483648

Пример

Давайте вычтем число 100 из числа 50 с помощью метода saturating_sub и сравним с обычным вычитанием:

fn main() { let a: i32 = 50; let b: i32 = 100; let res = a.saturating_sub(b); println!("{}", res); }

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

-50

Здесь переполнения не произошло, так как результат -50 укладывается в диапазон типа i32.

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

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