Différence entre les types C int32_t int_least32_t etc.

J’ai jamais lu qu’int32_t avait exactement 32 bits de long et int_least32_t seulement au moins 32 bits, mais ils ont les mêmes typedefs dans mes stdint.h

typedef int int_least32_t; 

et

 typedef int int32_t; 

Alors, où est la différence? C’est exactement pareil …

int32_t est un type entier signé avec une largeur de exactement 32 bits sans bits de remplissage et utilisant le complément à 2 pour les valeurs négatives. int_least32_t est le plus petit type entier signé avec une largeur d’au moins 32 bits. Ceux-ci ne sont fournis que si l’implémentation prend directement en charge le type.

Les types de caractères que vous voyez indiquent simplement que, dans votre environnement, le type standard int lui-même satisfait à ces exigences. Cela ne signifie pas nécessairement que ces types de fichiers sont les mêmes dans un environnement différent.

Pourquoi pensez-vous que sur un autre ordinateur avec un processeur différent, un système d’exploitation différent, une version différente de la bibliothèque standard C , vous verrez exactement cette typedefs?

Ces 2 types sont exactement ce que vous avez écrit. L’un d’eux fait exactement 32 bits, l’autre type est au moins 32 bits. Ainsi, une des situations possibles est lorsque les deux sont en 32 bits et que dans votre cas particulier, vous le voyez dans stdint.h . Sur un autre système, vous pouvez voir qu’ils sont différents.