Сужение целого типа в Rust
Перевод в более короткий целый тип оставляет младшие биты, а лишние отбрасывает. Это не то же самое, что проверка диапазона: результат может удивить, если число не вмещалось в новый тип.
Класический пример: большое значение в широком типе и узкий тип на выходе:
let n = 300i32 as i8;
println!("{}", n);
На экране появится 44, а не 300.
Обычным счетом это число заранее не получить.
Так работает сужение битовой ширины.
Дано число:
let num = 200;
Переведите его из i32 в i8
и выведите результат.
Скажите, можно ли обычным счетом заранее
узнать число на экране, если оно не влезло
в i8.
Скажите, сохраняет ли сужение полное десятичное значение, если оно не влезало в новый тип.