Respuestas:
sizeof(bool)
está definida la implementación, y la norma pone un énfasis notable en este hecho.
§5.3.3 / 1, abreviado:
sizeof(char)
,sizeof(signed char)
ysizeof(unsigned char)
son 1; el resultado desizeof
aplicado a cualquier otro tipo fundamental está definido por la implementación. [Nota: en particular,sizeof(bool)
ysizeof(wchar_t)
están definidos por la implementación. 69) ]
Nota a pie de página 69):
sizeof(bool)
no es necesario que sea 1.
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 ".
Su implementación está definida. Solo sizeof(char)
es 1
por el estándar.
CHAR_BIT
, definido en climits
.
bool
?