Метод overflowing_add
Метод overflowing_add выполняет сложение двух чисел типа i32
и возвращает кортеж из двух элементов: результата сложения и логического
значения, указывающего, произошло ли переполнение. Параметром метод
принимает число, которое нужно прибавить к текущему значению.
Если переполнения не было, второй элемент кортежа равен false,
а результат совпадает с обычным сложением. Если переполнение произошло,
второй элемент равен true, а результат представляет собой
значение, полученное с учётом циклического переноса (wrapping).
Синтаксис
i32.overflowing_add(rhs)
Пример
Давайте сложим числа 100 и 200, чтобы убедиться,
что переполнения не происходит:
fn main()
{
let res = 100i32.overflowing_add(200);
println!("{:?}", res);
}
Результат выполнения кода:
(300, false)
Пример
Давайте сложим максимальное значение i32 и число 1,
чтобы вызвать переполнение:
fn main()
{
let res = i32::MAX.overflowing_add(1);
println!("{:?}", res);
}
Результат выполнения кода:
(-2147483648, true)
Пример
Давайте сложим минимальное значение i32 и число -1,
чтобы вызвать переполнение в отрицательную сторону:
fn main()
{
let res = i32::MIN.overflowing_add(-1);
println!("{:?}", res);
}
Результат выполнения кода:
(2147483647, true)
Смотрите также
-
метод
wrapping_add,
который выполняет сложение с циклическим переносом без флага переполнения -
метод
checked_add,
который возвращаетNoneпри переполнении -
метод
saturating_add,
который ограничивает результат максимальным или минимальным значением -
метод
overflowing_sub,
который выполняет вычитание с флагом переполнения