Ich kann in der Standarddokumentation keine Antwort finden. Muss der C ++ - Sprachstandard sizeof(bool)
immer 1 (für 1 Byte) sein, oder ist diese Größe implementierungsdefiniert?
c++
boolean
sizeof
implementation-defined-behavior
0xbadf00d
quelle
quelle
bool
?http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"In Visual C ++ 4.2 enthielten die Standard-C ++ - Headerdateien ein typedef, das bool mit int gleichsetzte. In Visual C ++ 5.0 und höher ist bool als integrierter Typ mit einer Größe von 1 Byte implementiert. Dies bedeutet, dass dies für Visual gilt In C ++ 4.2 ergibt ein Aufruf von sizeof (bool) 4, während in Visual C ++ 5.0 und höher derselbe Aufruf 1 ergibt. Dies kann zu Speicherbeschädigungsproblemen führen, wenn Sie in Visual C ++ 4.2 Strukturelemente vom Typ bool definiert haben und Objekte mischen Dateien (OBJ) und / oder DLLs, die mit den Compilern 4.2 und 5.0 oder höher erstellt wurden. "
quelle
Die Implementierung ist definiert. Nur
sizeof(char)
ist1
nach dem Standard.quelle
CHAR_BIT
, definiert in gefunden werdenclimits
.Siehe 5.3.3 Absatz 1:
quelle