Разница между типами C int32_t int_least32_t и т. Д.

Я когда-либо читал, что int32_t имеет длину 32 бита, а int_least32_t - не менее 32 бит, но в моем stdint.h они имеют одинаковые определения типов:

typedef int  int_least32_t;

а также

typedef int  int32_t;

Так в чем же разница? Они точно такие же...

2 ответа

Решение

int32_t целочисленный тип со знаком шириной ровно 32 бита, без битов заполнения и использующий дополнение 2 для отрицательных значений.int_least32_t наименьший целочисленный тип со знаком со шириной не менее 32 бит. Они предоставляются только в том случае, если реализация напрямую поддерживает тип.

Typedefs, которые вы видите, просто означает, что в вашей среде оба эти требования удовлетворяются стандартом int набери сам. Это не обязательно означает, что эти typedefs одинаковы в другой среде.

Почему вы думаете, что на другом компьютере с другим процессором, другой ОС, другая версия C Стандартные библиотеки вы увидите именно этот typedefs?

Это 2 типа именно то, что вы написали. Один из них является 32-битным, а другой - как минимум 32-битным. Таким образом, одна из возможных ситуаций, когда они оба 32-битные, и в вашем конкретном случае вы видите это в stdint.h, В другой системе вы можете видеть, что они разные.

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