Подтвердить что ты не робот

В чем разница между uint16_t и unsigned short int incase 64-битного процессора?

Я пришел использовать переменную типа uint16_t, но не могу использовать этот тип данных из-за ограничений моего проекта. Возможно ли unsigned short int вместо uint16_t? Я не знаю разницы между ними. Может кто-нибудь прояснить пожалуйста?

4b9b3361

Ответ 1

uint16_t - это неподписанное 16-разрядное целое число.

unsigned short int - беззнаковое короткое целое число, но размер зависит от реализации. Стандарт только говорит, что он не менее 16-бит (т.е. Минимальное значение UINT_MAX равно 65535). На практике это обычно 16 бит, но вы не можете считать это гарантированным.

Примечание:

  • Если вы хотите использовать 16-разрядное целое число без знака, используйте uint16_t.
  • inttypes.h и stdint.h вводятся в C99. Если вы используете C89, определите свой собственный тип.
  • uint16_t может не предоставляться в определенной реализации (см. ссылку ниже), но unsigned short int всегда доступен.

Ссылка: C11 (ISO/IEC 9899: 201x) §7.20 Целочисленные типы

Для каждого типа, описанного здесь, который обеспечивает реализация) объявляет это имя typedef и определяет связанные макросы. И наоборот, для каждого описанного здесь типа, который реализация не предоставляет, не объявляет это имя typedef и не определяет связанные макросы. Реализация должна обеспечивать те типы, которые называются "необходимыми", но не обязательно предоставлять какие-либо другие (описываемые как "необязательные).

Ответ 2

uint16_t гарантируется целое число без знака, которое имеет 16 бит больших

unsigned short int гарантированно будет unsigned short integer, где short integer определяется компилятором (и потенциально флагов компилятора), который вы используете в настоящее время. Для большинства компиляторов для аппаратного обеспечения x86 размер short integer составляет 16 бит.

Также обратите внимание, что в стандарте ANSI C) определяется только минимальный размер 16 бит, максимальный размер зависит от разработчика компилятора

Минимальные ограничения по типу

Любой компилятор, соответствующий Стандарту, должен также уважать следующие пределы в отношении диапазона значений, любые конкретные тип может принять. Обратите внимание, что это нижние пределы: реализация может превышать любые или все из них. Отметим также, что минимальный диапазон для char зависит от того, считается ли charдля подписания или без знака.

Тип Минимальный диапазон

signed char     -127 to +127
unsigned char      0 to 255
short int     -32767 to +32767
unsigned short int 0 to 65535