Jawaban:
sizeof(bool) adalah implementasi yang ditentukan, dan standar menekankan pada fakta ini.
§5.3.3 / 1, diringkas:
sizeof(char),sizeof(signed char)dansizeof(unsigned char)1; hasil darisizeofpenerapan pada tipe fundamental lainnya ditentukan oleh implementasi. [Catatan: secara khusus,sizeof(bool)dansizeof(wchar_t)ditentukan oleh implementasi. 69) ]
Catatan kaki 69):
sizeof(bool)tidak harus 1.
http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
Pada Visual C ++ 4.2 file header Standard C ++ berisi typedef yang disamakan bool dengan int. Pada Visual C ++ 5.0 dan yang lebih baru, bool diimplementasikan sebagai built-in type dengan ukuran 1 byte. Itu artinya untuk Visual C ++ 4.2, panggilan sizeof (bool) menghasilkan 4, sedangkan dalam Visual C ++ 5.0 dan yang lebih baru, panggilan yang sama menghasilkan 1. Hal ini dapat menyebabkan masalah kerusakan memori jika Anda telah menetapkan anggota struktur tipe bool dalam Visual C ++ 4.2 dan objek pencampuran file (OBJ) dan / atau DLL yang dibuat dengan kompiler 4.2 dan 5.0 atau yang lebih baru. "
Implementasinya ditentukan. Hanya sizeof(char)adalah 1oleh standar.
CHAR_BIT, didefinisikan di climits.
bool?