Dalam C ++, saya bertanya-tanya mengapa tipe bool panjangnya 8 bit (di sistem saya), di mana hanya satu bit yang cukup untuk menyimpan nilai boolean?
Saya dulu percaya itu untuk alasan kinerja, tetapi kemudian pada mesin 32 bit atau 64 bit, di mana register lebar 32 atau 64 bit, apa keuntungan kinerja?
Atau hanya salah satu dari alasan 'historis' ini?
sizeof(bool)
4. Saya bisa bersumpah bahwa msvc memiliki 32-bit bools, tetapi saya hanya mencoba dan tidak.
vector<bool>
bukan karena mencoba menjadi pintar dan mengemas bool menjadi bit, tetapi mencoba untuk melakukan ini dan menyamar sebagai wadah STL . Bitet biasa akan baik-baik saja asalkan tidak juga berpura-pura menjadi wadah STL.
bool
tipe data C ++ dengan BOOL
tipe Windows yang diketikkan long
. Jadi sizeof(bool) != sizeof(BOOL)
, yang saya yakin menyebabkan banyak kebingungan (dan mungkin banyak bug). Terutama karena ada juga boolean
dan BOOLEAN
typedef di Windows, yang merupakan alias untuk unsigned char
. Juga, perhatikan bahwa meskipun umum untuk bool
1 byte, standar C ++ memiliki catatan yang secara khusus menunjukkan bahwa sizeof(bool)
bisa lebih besar.