En C ++, me pregunto por qué el tipo bool tiene 8 bits de largo (en mi sistema), donde solo un bit es suficiente para mantener el valor booleano.
Solía creer que era por razones de rendimiento, pero luego, en una máquina de 32 bits o 64 bits, donde los registros tienen 32 o 64 bits de ancho, ¿cuál es la ventaja de rendimiento?
¿O es solo una de estas razones "históricas"?
sizeof(bool)
estaría 4. Podría jurar que msvc tenía bools de 32 bits, pero lo intenté y no es así.
vector<bool>
no es que intente ser inteligente y empaquetar los trozos en bits, sino que intente hacer esto y disfrazarse como un contenedor STL . Un bitset simple hubiera estado bien siempre que no pretenda ser un contenedor STL.
bool
tipo de datos C ++ con el BOOL
tipo de Windows al que está typedefed long
. Entonces sizeof(bool) != sizeof(BOOL)
, lo que estoy seguro causa mucha confusión (y probablemente una buena cantidad de errores). Particularmente porque también hay boolean
y BOOLEAN
typedefs en Windows, que son alias para unsigned char
. Además, tenga en cuenta que si bien es común bool
que sea de 1 byte, el estándar C ++ tiene una nota que indica específicamente que sizeof(bool)
puede ser más grande.