Je ne trouve pas de réponse dans la documentation standard. Le standard du langage C ++ doit-il sizeof(bool)
toujours être 1 (pour 1 octet), ou cette taille est-elle définie par l'implémentation?
c++
boolean
sizeof
implementation-defined-behavior
0xbadf00d
la source
la source
bool
?http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
«Dans Visual C ++ 4.2, les fichiers d'en-tête C ++ standard contenaient un typedef qui assimilait bool à int. Dans Visual C ++ 5.0 et versions ultérieures, bool est implémenté en tant que type intégré avec une taille de 1 octet. Cela signifie que pour Visual C ++ 4.2, un appel de sizeof (bool) donne 4, tandis que dans Visual C ++ 5.0 et versions ultérieures, le même appel donne 1. Cela peut provoquer des problèmes de corruption de la mémoire si vous avez défini des membres de structure de type bool dans Visual C ++ 4.2 et que vous mélangez des objets (OBJ) et / ou DLL créés avec les compilateurs 4.2 et 5.0 ou version ultérieure. "
la source
C'est la mise en œuvre définie. Ce
sizeof(char)
n'est que1
par la norme.la source
CHAR_BIT
, défini dansclimits
.Voir 5.3.3 paragraphe 1:
la source