data - long long c++
¿Está definido sizeof(bool)? (4)
Su implementación está definida, y el estándar pone énfasis notable en dejar eso en claro.
§5.3.3 / 1, abreviado:
sizeof(char)
,sizeof(signed char)
ysizeof(unsigned char)
son 1; el resultado delsizeof
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 al pie 69):
sizeof(bool)
no es necesario que sea 1.
No puedo encontrar una respuesta en la documentación estándar. ¿ sizeof(bool)
siempre es de 1 byte, o está definida su implementación?
Su implementación está definida. Solo sizeof(char)
es 1
por el estándar.
Ver 5.3.3 párrafo 1:
[Nota: en particular, sizeof (bool) y sizeof (wchar_t) están definidos por la implementación.69)]
http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"En Visual C ++ 4.2, los archivos de encabezado C ++ estándar contenían un typedef que equiparaba bool con int. En Visual C ++ 5.0 y posterior, bool se implementa como un tipo incorporado 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 posterior, 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án mezclando objeto archivos (OBJ) y / o DLL construidos con los compiladores 4.2 y 5.0 o posteriores ".