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

Разница между разными целыми типами

Мне было интересно, в чем разница между 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.

4b9b3361

Ответ 1

unsigned и unsigned int являются синонимами, очень похожими на [unsigned] short [int] и [unsigned] long [int].

uint32_t - это тип, который (необязательно) определяется стандартом C. uint32 - это просто имя, которое вы создали, хотя оно и определяется как одно и то же.

Ответ 2

Нет никакой разницы.

unsigned int = uint32 = uint32_t = unsigned в вашем случае и unsigned int = unsigned всегда

Ответ 3

Абсолютно никакой разницы между unsigned и unsigned int.

Является ли этот тип хорошим совпадением для uint32_t, зависит от реализации; a int может быть "короче", чем 32 бита.

Ответ 4

unsigned и unsigned int являются синонимами по историческим причинам; они оба означают "целое число без знака самого естественного размера для архитектуры/платформы ЦП", которое часто (но далеко не всегда) 32 бита на современных платформах.

<stdint.h> является стандартным заголовком на C99, который должен давать определения типов для целых чисел определенных размеров, с условным обозначением uint32_t.

<types.h>, который вы просматриваете, выглядит нестандартным и, предположительно, принадлежит к какой-либо структуре, используемой вашим проектом. Его uint32 typedef совместим с uint32_t. Если вы должны использовать тот или иной код, это вопрос для вашего менеджера.