No encuentro una respuesta en la documentación estándar. ¿El estándar del lenguaje C ++ requiere sizeof(bool)
ser siempre 1 (para 1 byte), o este tamaño está definido por la implementación?
c++
boolean
sizeof
implementation-defined-behavior
0xbadf00d
fuente
fuente
bool
?http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"En Visual C ++ 4.2, los archivos de encabezado de C ++ estándar contenían una typedef que equiparaba bool con int. En Visual C ++ 5.0 y versiones posteriores, bool se implementa como un tipo integrado con un tamaño de 1 byte. Eso significa que para Visual C ++ 4.2, una llamada de sizeof (bool) produce 4, mientras que en Visual C ++ 5.0 y versiones posteriores, la misma llamada produce 1. Esto puede causar problemas de corrupción de memoria si ha definido miembros de estructura de tipo bool en Visual C ++ 4.2 y está mezclando objetos archivos (OBJ) y / o DLL construidos con los compiladores 4.2 y 5.0 o posteriores ".
fuente
Su implementación está definida. Solo
sizeof(char)
es1
por el estándar.fuente
CHAR_BIT
, definido enclimits
.Ver 5.3.3 párrafo 1:
fuente