Ah oui, je vois ton soucis.
Il y a un gros piège: 'a' n'est pas une constante de type char, mais de type int.
Si si.
C'est une disposition qui a été prise pour permettre l'utilisation des "constantes de multicaractères" comme int toto = 'to';.
La valeur de telles constantes est définies par l'implémentation, et en règle général, leur usage est une erreur.
Personnellement, je n'en connais aucun usage dans du code classique. Peut-être dans un embarqué?
Un type possède une unique représentation, que ce soit pour une variable ou une valeur temporaire (de ce type).
Essaye donc
Pour le C (et le C++), la norme est le langage, puisque c'est le traité international le définissant.Code:(void)fprintf( stdout, "taille de 'a': base: %lu\tchar: %lu\tlong long: %lu\n", sizeof('a'),sizeof( (char)'a' ), sizeof( (long long)'a' ) );
Tout compilateur déviant de la norme n'est pas conforme au C.
C'est une différence majeure avec le Java, par exemple, qui est défini par son implémentation de référence.