int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_t
Я понимаю что они определяют статический размер переменных на всех устройствах но для чего это нужно. + почему нет аналогий для других типов?
но для чего это нужно
Эти типы нужны тогда, когда переменная должна иметь точный размер при портировании программы на другую систему или компилятор. Например, если нам нужно работать с большим файлом, его размер можно представить как size_t
. Но при компиляции под 32 бита такая переменная имеет размер 32 бита и программа будет работать неправильно с большими файлами. uint64_t
гарантирует правильную работу в любой системе.
Другой пример: поле в двоичном файле занимает 4 байта и нам нужно его считать в переменную. Тип int
может быть 2-х, 4-х, и 8-и байтовым, поэтому при чтении в переменную int
в первом случае испортится память, а в последнем - старшие 4 байта переменной будут содержать мусор. Решение - использовать int32_t
.
почему нет аналогий для других типов?
Есть. Для символов есть char8_t
, char16_t
, и char32_t
. Для вещественных - float
и double
. Остается только bool
, но для него особой проблемы нет.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется DLL C++ скомпилированная на MSVCПри динимической подгрузке DLL инициализируется фабрика и создает класс который используется дальше
Необходимо написать функции перевода вещественных и целых чисел в строку без функцийПервую функцию написал
У меня есть указатель на вектор std::vector*Как получить адрес элемента i этого вектора?