Jamais. char
, signed char
y unsigned char
sont les plus petites unités adressables, et int8_t
y uint8_t
ne peut pas avoir de bits de remplissage. Ainsi, si CHAR_BIT > 8
ces types ne peuvent pas exister.
Voici ce que dit le projet de norme C11 (n1570.pdf) :
6.5.3.4 Les opérateurs sizeof et _Alignof
...
4 Lorsque sizeof est appliqué à un opérande qui a le type char, unsigned char, ou char signé, (ou une version qualifiée de celui-ci) le résultat est 1. ...
Ce sont donc les plus petites unités adressables.
7.20.1.1 Types d'entiers de largeur exacte
1 Le nom typedef intN_t désigne un type de nombre entier signé de largeur N, sans bits de remplissage, et une représentation en complément à deux. Ainsi , int8_t désigne un tel type de nombre entier signé avec une largeur d'exactement 8 bits.
2 Le nom de type uintN_t désigne un type d'entier non signé avec une largeur largeur N et sans bits de remplissage. Ainsi, uint24_t désigne un type entier non signé de largeur avec une largeur d'exactement 24 bits.
3 Ces types sont facultatifs. Cependant, si une implémentation fournit des types entiers d'une largeur de 8, 16, 32 ou 64 bits, sans bits de remplissage, et (pour les types signés) qui ont une représentation en complément à deux elle doit définir les noms de typedef correspondants.