Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Зачем использовать uint32_t?

Гарантируется ли, что типы с явным указанием размера (такие, как uint32_t, uint64_t, uint16_t) занимают одинаковое количество памяти на всех платформах (на десктопах, на мобилах, на микроконтроллерах)? Собственно, независимо от ответа, как эти типы можно использовать, есть ли какие-нибудь особенные задачи, где очень нужно знать размер в битах? Маски, флаги? Верно ли то, что в современном C обычный деревянный int под неким табу и не стоит использовать типы, размер которых меняется от платформы к платформе (здесь важны ссылки на стандарт, если он каким-то образом это регулирует или на мануалы к компилятору)?


Ответ

типы с явным указанием размера
Стандарт гарантирует их размеры, но не их существование. Т. е. теоретически можно встретить платформу, на которой нет нужного типа. Зато если уж программа скомпилировалась, то размер типа ты точно знаешь.
Там ещё есть типы со словом least, например, uint_least32_t, если тебе надо хотя бы 32 бита.
обычный деревянный int
Стандарт не гарантирует его размер.
не стоит использовать типы, размер которых меняется от платформы к платформе
Всё зависит от задач. Если мне нужна 32-битная маска для перебора, то логично не полагаться на int. Если какой-то размер, то есть size_t, зависящий от битности программы. А если мне нужно вывести число процентов, то можно и обычный int взять.

Комментариев нет:

Отправить комментарий