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 : Sélectionner tout - Visualiser dans une fenêtre à part (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.






Répondre avec citation




D'accord , là-dessus je comprends mieux la choses



Partager