In C ++, mi chiedo perché il tipo bool sia lungo 8 bit (sul mio sistema), dove è sufficiente solo un bit per contenere il valore booleano?
Credevo fosse per motivi di prestazioni, ma poi su una macchina a 32 o 64 bit, dove i registri sono larghi 32 o 64 bit, qual è il vantaggio in termini di prestazioni?
O è solo una di queste ragioni "storiche"?
sizeof(bool)sarebbe 4. Potrei giurare che msvc avesse bool a 32 bit, ma ho appena provato e non lo fa.
vector<bool>non è che cerca di essere intelligente e impacca i bool in pezzi, ma che cerca di farlo e si maschera da contenitore STL . Un semplice bitset andrebbe bene purché non pretenda di essere anche un contenitore STL.
booltipo di dati C ++ con il BOOLtipo di Windows a cui è stato digitato long. Quindi sizeof(bool) != sizeof(BOOL), che sono sicuro provoca molta confusione (e probabilmente un discreto numero di bug). Soprattutto perché ci sono anche booleane BOOLEANtypedefs in Windows, che sono alias per unsigned char. Inoltre, nota che mentre è comune boolessere 1 byte, lo standard C ++ ha una nota che indica specificamente che sizeof(bool)può essere più grande.