Em C ++, estou me perguntando por que o tipo bool tem 8 bits de comprimento (no meu sistema), onde apenas um bit é suficiente para armazenar o valor booleano?
Eu costumava acreditar que era por motivos de desempenho, mas em uma máquina de 32 bits ou 64 bits, onde os registros têm 32 ou 64 bits de largura, qual é a vantagem de desempenho?
Ou é apenas uma dessas razões "históricas"?
sizeof(bool)
seria 4. Eu poderia jurar que o msvc tinha bools de 32 bits, mas tentei e não.
vector<bool>
não é que ele tenta ser inteligente e empacota bools em bits, mas que tenta fazer isso e se disfarçar como um contêiner STL . Um conjunto de bits simples ficaria bem desde que também não pretendesse ser um contêiner STL.
bool
tipo de dados C ++ com o BOOL
tipo do Windows ao qual é digitado o tipo long
. Então sizeof(bool) != sizeof(BOOL)
, o que tenho certeza causa muita confusão (e provavelmente um bom número de bugs). Especialmente porque também existem boolean
e BOOLEAN
typedefs no Windows, que são aliases para unsigned char
. Além disso, observe que, embora seja comum bool
ter 1 byte, o padrão C ++ possui uma observação que indica especificamente que sizeof(bool)
pode ser maior.