Moi ce que j'ai retenu de la norme c'est que int8_t peut ne pas être défini si jamais ton architecture ne permet pas d'adresser les choses par mots de 8 bits.
Par contre il peut y avoir des types int_least8_t (au moins 8 bits) et int_fast8_t (au moins 8 bits, et plus large si ça lui permet d'être plus rapide).
Je crois que ça n'empêche ps d'avoir sizeof(int8_t)=2: ça voudrait dire que le compilateur génère automatiquement des opérations qui masquent 8 des 16 bits pour que le code écrit aie effectivement un type qui se comporte comme s'il n'avait que 8 bits, mais qui prend plus de place, avec des bits qui se retrouve inutilisés.
[^] # Re: Question probablement bête
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal #define CHAR_BIT 8. Évalué à 5.
Moi ce que j'ai retenu de la norme c'est que int8_t peut ne pas être défini si jamais ton architecture ne permet pas d'adresser les choses par mots de 8 bits.
Par contre il peut y avoir des types int_least8_t (au moins 8 bits) et int_fast8_t (au moins 8 bits, et plus large si ça lui permet d'être plus rapide).
Je crois que ça n'empêche ps d'avoir sizeof(int8_t)=2: ça voudrait dire que le compilateur génère automatiquement des opérations qui masquent 8 des 16 bits pour que le code écrit aie effectivement un type qui se comporte comme s'il n'avait que 8 bits, mais qui prend plus de place, avec des bits qui se retrouve inutilisés.