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

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

Другие вопросы по тегам