Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmNuIT 23 of 373 menu
◀ ▶

Целые типы в Rust

Целые числа в Rust представлены следующими типами: i8, i16, i32, i64 и i128. Разница между ними - сколько байтов занимает ячейка в оперативной памяти и какое самое большое число в нее помещается.

Самым основным типом для чисел является тип i32. Это 4 байта, около двух миллиардов в плюс и в минус. Количество, номер и сумма в разумных пределах туда входят. Число без указания типа получает именно i32. Например, число 1500000 помещается, а число 3000000000 больше двух миллиардов - и в i32 уже не влазит.

Тип isize проблемный, так как для него размер ячейки зависит от компьютера. На 32-битной системе это 4 байта, около двух миллиардов в плюс и в минус. На 64-битной - 8 байт, около девяти квинтиллионов в плюс и в минус.

Тип i64 занимает 8 байт на любом компьютере, около девяти квинтиллионов в плюс и в минус. Для чисел, которые не помещаются в i32, стоит пользоваться именно этим типом. У такого числа в конце пишут i64.

Тип i16 состоит из 2 байтов, около 32 тысяч в плюс и в минус. Число вроде 40000 в эти 2 байта уже не поместится.

Тип i8 состоит из 1 байта, около 128 в плюс и в минус. Число вроде 200 в этот байт уже не поместится.

Тип i128 занимает 16 байт. Граница намного выше девяти квинтиллионов.

Запишем три числа в подходящие типы и выведем их:

let num1: i16 = 9; let num2: i32 = 1500000; let num3: i64 = 3000000000i64; println!("{}", num1); println!("{}", num2); println!("{}", num3);

Сведем типы и диапазоны:

Тип Байты Диапазон
i8 1 от -128 до 127
i16 2 от -32768 до 32767
i32 4 от -2147483648 до 2147483647
i64 8 от -9223372036854775808 до 9223372036854775807
i128 16 намного шире, чем у i64
isize 4 или 8 на 32 битах как i32, на 64 битах как i64

В каком диапазоне изменяются числа типа i16?

В каком диапазоне изменяются числа типа i32?

В каком диапазоне изменяются числа типа i64?

В каком диапазоне изменяются числа типа isize?

Есть число 200. Помещается ли оно в диапазон типа i8?

Есть число 40000. Помещается ли оно в диапазон типа i16?

Есть число 100000. Помещается ли оно в диапазон типа i32?

Есть число 3000000000. Помещается ли оно в диапазон типа i32?

Есть число 100000000000. Помещается ли оно в диапазон типа i64?

Есть число 9223372036854775808. Помещается ли оно в диапазон типа i64?

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить