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 darisizeof
penerapan 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 1
oleh standar.
CHAR_BIT
, didefinisikan di climits
.
bool
?