Saya tidak dapat menemukan jawaban dalam dokumentasi standar. Apakah standar bahasa C ++ harus sizeof(bool)
selalu 1 (untuk 1 byte), atau apakah ukuran ini ditentukan oleh implementasi?
c++
boolean
sizeof
implementation-defined-behavior
0xbadf00d
sumber
sumber
bool
?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. "
sumber
Implementasinya ditentukan. Hanya
sizeof(char)
adalah1
oleh standar.sumber
CHAR_BIT
, didefinisikan diclimits
.Lihat 5.3.3 paragraf 1:
sumber