int8_t
, int16_t
, int32_t
e int64_t
são do tipo inteiro assinado com largura de exatamente 8, 16, 32 e 64 bits, respectivamente, sem bits de preenchimento e usando complemento de 2 para valores negativos (fornecido apenas se a implementação suportar diretamente o tipo).
int_least8_t
, int_least16_t
, int_least32_t
e int_least64_t
são os menores tipos inteiros com sinal com largura de pelo menos 8, 16, 32 e 64 bits, respectivamente.
Se uma implementação tiver int8_t
, então parece uma escolha natural int_least8_t
, pois é um tipo com largura de pelo menos 8. No entanto, por exemplo, no modelo de dados LLP64, ambos int
e long
são de 32 bits, então int32_t
poderia ser , int
mas int_least32_t
poderia ser long
, o que seria confuso, mas é válido?
Posso razoavelmente esperar que int_least32_t
(e char32_t
) e int32_t
seja do mesmo tipo? Existe uma implementação real onde int_leastX_t difere de intX_t? (exceto DeathStation 9000 )