Browse Source

Отформатировал как в оригинале

pull/1411/head
govno-coder322 5 months ago committed by GitHub
parent
commit
c136fab507
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      rustbook-ru/src/ch03-02-data-types.md

2
rustbook-ru/src/ch03-02-data-types.md

@ -55,7 +55,7 @@ let guess: u32 = "42".parse().expect("Not a number!"); @@ -55,7 +55,7 @@ let guess: u32 = "42".parse().expect("Not a number!");
Как же узнать, какой тип целого числа использовать? Если вы не уверены, значения по умолчанию в Rust, как правило, подходят для начала: целочисленные типы по умолчанию `i32`. Основной случай, в котором вы должны использовать `isize` или `usize`, — это индексация какой-либо коллекции.
> <h>Целочисленное переполнение</h>
> ##### Целочисленное переполнение
>
> Допустим, имеется переменная типа `u8`, которая может хранить значения от 0 до 255. Если попытаться изменить переменную на значение вне этого диапазона, например, 256, произойдёт *целочисленное переполнение*, что может привести к одному из двух вариантов поведения. Если выполняется компиляция в режиме отладки, Rust включает проверку на целочисленное переполнение, приводящую вашу программу к *панике* во время выполнения, когда возникает такое поведение. Rust использует термин *паника(panicking)*, когда программа завершается с ошибкой. Мы обсудим панику более подробно в разделе ["Неустранимые ошибки с `panic!`"] в главе 9. . При компиляции в режиме release с флагом `--release`, Rust *не* включает проверки на целочисленное переполнение, которое вызывает панику. Вместо этого, в случае переполнения, Rust выполняет *обёртывание второго дополнения*. Проще говоря, значения, превышающие максимальное значение, которое может хранить тип, "оборачиваются" к минимальному из значений, которые может хранить тип. В случае `u8` значение 256 становится 0, значение 257 становится 1, и так далее. Программа не запаникует, но переменная будет иметь значение, которое, вероятно, не будет соответствовать вашим ожиданиям. Полагаться на поведение обёртывания целочисленного переполнения считается ошибкой. Для явной обработки возможности переполнения существует семейство методов, предоставляемых стандартной библиотекой для примитивных числовых типов:
> - Обёртывание во всех режимах с помощью методов `wrapping_*`, таких как `wrapping_add`.

Loading…
Cancel
Save