Разница между разными целочисленными типами
Мне было интересно, в чем разница между uint32_t
а также uint32
и когда я посмотрел в заголовочных файлах это было так:
types.h:
/** @brief 32-bit unsigned integer. */
typedef unsigned int uint32;
stdint.h:
typedef unsigned uint32_t;
Это только приводит к большему количеству вопросов: в чем разница между
unsigned varName;
а также
unsigned int varName;
?
я использую MinGW.
4 ответа
unsigned
а также unsigned int
синонимичны, очень похожи unsigned short [int]
а также unsigned long [int]
,
uint32_t
это тип, который (необязательно) определяется стандартом C. uint32
это просто придуманное вами имя, хотя оно определено как одно и то же.
Нет никакой разницы.
unsigned int = uint32 = uint32_t = unsigned
в вашем случае и unsigned int = unsigned
всегда
unsigned
а также unsigned int
являются синонимами по историческим причинам; они оба означают "целое число без знака наиболее естественного размера для архитектуры / платформы ЦП", которое на современных платформах часто (но далеко не всегда) составляет 32 бита.
<stdint.h>
стандартный заголовок в C99, который должен давать определения типов для целых чисел определенных размеров, с uint32_t
соглашение об именовании.
<types.h>
То, на что вы смотрите, кажется нестандартным и предположительно относится к какой-то структуре, которую использует ваш проект. это uint32
typedef совместим с uint32_t
, Нужно ли вам использовать то или другое в вашем коде - это вопрос для вашего менеджера.
Там нет абсолютно никакой разницы между unsigned
а также unsigned int
,
Подходит ли этот тип для uint32_t
хотя зависит от реализации; int
может быть "короче", чем 32 бита.