5. Базовые типы данных в Rust
В языке Rust каждое значение относится к определенному типу данных. Раст проверяет достоверность значений, прежде чем они будут сохранены или обработаны программой. Это ещё одна из гарантий стабильного поведения кода.
Компилятор может автоматически определить тип данных переменной на основе присвоенного ей значения. Однако правильнее, особенно в начале обучения, всегда явно указывать типы данных. Так вы привыкнете к этой парадигме статически типизированного языка программирования.
Вспомним двоичную систему
Компьютер осуществляет вычисления в двоичной системе счисления. Бит – это минимальная единица измерения объёма информации, так как она хранит одно из двух значений:
Количество значений в десятичной системе счисления:
1 бит - 2 (0 и 1)
8 бит - 256 (0-255, это 1 байт)
16 бит - 65536
32 бит - 4 294 967 296
Подробнее почитайте в учебниках.
Числовые типы
Беззнаковое целое (Unsigned Integer)
Обозначается как: u8, u16, u32, u64, u128, usize.
Число после буквы означает количество бит выделяемых для хранения числа. Например, u8 может хранить числа от 0 до до 255, что соответствует (2)8 различных чисел.
usize - размер зависит от компьютера, на котором работает ваша программа (32 или 64 бит)
Целое число (Integer )
i8, i16, i32, i64, i128, isize
К примеру, i8 может хранить числа от -(2)7 до (2)7-1, что соответствует от -128 до 127. Почему 2 в седьмой, а не в восьмой степени, спросите вы, ответ: один бит тратится на хранение знака (плюс или минус).
isize - размер зависит от компьютера, на котором работает ваша программа (32 или 64 бит)
Если тип не указан, то Rust определяет тип целого числа как i32.
Дробное число (Float)
Из за особенностей хранения в памяти их называют числами с плавающей точкой, отсюда и float.
f32: хранит число с плавающей точкой, которое занимает в памяти 32 бита.
f64: хранит число с плавающей точкой, которое занимает в памяти 64 бита.
Типом по умолчанию является f64, потому что все современные CPU работают с ним приблизительно с такой же скоростью, как и с f32, но с большей точностью. Его диапазон приблизительно от -1.8 × 10308 до +1.8 × 10308.
Числа пишутся через точку, например 37.0 или 0.0423423567.
Нечисловые типы
Логический тип (bool)
Принимает одно из значений:
Символьный тип (char)
Char может хранить отдельные символы Unicode в одинарных кавычках.
Например: 'Ы', 'r', '5'
Фиксированная cтрока (&str)
Например: "Кошка бродит по дорожке", "monitor", "3.141593".
Фиксированная строка неизменяемая, её значение известно во время компиляции
Строковый объект (String)
Строковый объект похож на строку
Давайте далее строку
Указание типа данных
В языке Rust тип данных указывается рядом с переменной после двоеточия. Например:
Иногда, когда компилятор может сам выяснить что за тип у данной переменной, в таком случае его не обязательно указывать. Хотя явное указание предпочтительнее, тем более, если код вашей программы могут использовать и другие программисты.
Также можно, но чаще не нужно, явно указывать тип данных числа в выражениях:
let b: f64 = a / 2.4_f64;
Здесь подчеркивание это просто разделитель для удобства чтения. Подчеркивание можно также использовать в длинных числах, например, 31_240_395 то же что и 31240395.
Системы счисления
Иногда нужно хранить данные не в десятичной системе, для этого можно использовать префиксы:
Двоичный формат (binary) — 0b
Восьмеричный формат (octal) — 0o
Шестнадцатеричный формат (hexadecimal) — 0x
Например:
fn main() {
println!("{}", 0x2a); // Или с разделителем 0x_2a
}
Потому, что
Приведение типов
Приведение типов – это преобразование типа данных переменной в какой-либо другой тип данных. Рассмотрим их в лекции 11. Сложные типы данных.
Для просмотра заданий и решений, а также публикации своих решений необходимо зарегистрироваться на сайте.
Всё бесплатно, мы просто хотим с вами познакомиться и понять насколько актуально то, что мы делаем.