Je suis arrivé à utiliser une variable de type uint16_t
, mais je ne peux pas utiliser ce type de données en raison des limites de mon projet. Est-ce possible de unsigned short int
au lieu de uint16_t
? Je ne connais pas la différence entre les deux. Quelqu'un pourrait-il préciser s'il vous plaît?
uint16_t
est un entier non signé de 16 bits.
unsigned short int
est un entier court non signé, mais sa taille dépend de la mise en œuvre. La norme dit seulement qu’elle est au moins 16 bits (c’est-à-dire que la valeur minimale de UINT_MAX
est 65535
). En pratique, il s'agit généralement de 16 bits, mais vous ne pouvez pas considérer cela comme garanti.
Remarque:
uint16_t
.inttypes.h
et stdint.h
sont tous deux introduits dans C99. Si vous utilisez C89, définissez votre propre type.uint16_t
peut ne pas être fourni dans certaines mises en œuvre (voir la référence ci-dessous), mais unsigned short int
est toujours disponible.Référence: C11 (ISO/IEC 9899: 201x) §7.20 Types de nombre entier
Pour chaque type décrit ici fourni par l’implémentation) doit déclarer ce nom de typedef et définir les macros associées. Inversement, pour chaque type décrit ici que l’implémentation ne fournit pas, ne doit pas déclarer ce nom typedef ni définir les macros associées. Une implémentation doit fournir les types décrits comme "‘ requis ", mais n’a besoin de fournir aucun des autres (décrits comme" optionnel ").
uint16_t
est garanti être un entier non signé de 16 bits
unsigned short int
est garanti d'être un non-signé short integer
, où short integer
est défini par le compilateur (et éventuellement les indicateurs de compilateur) que vous utilisez actuellement. Pour la plupart des compilateurs pour matériel x86, un short integer
a une taille de 16 bits.
Notez également que, par norme ANSI C , seule la taille minimale de 16 bits est définie, la taille maximale étant laissée au développeur du compilateur.
Limites de type minimales
Tout compilateur conforme à la norme doit également respecter les limites suivantes en ce qui concerne la plage de valeurs qu'un type particulier peut accepter. Notez qu'il s'agit de limites inférieures: une implémentation est libre de dépasser tout ou partie de celles-ci. Notez également que la plage minimale pour un caractère dépend du fait qu'un caractère est considéré comme signé ou non.
Type Plage minimale
signed char -127 to +127 unsigned char 0 to 255 short int -32767 to +32767 unsigned short int 0 to 65535