Разница между типами 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
, В другой системе вы можете видеть, что они разные.