Не могу найти ответ в стандартной документации. Требует ли стандарт языка C ++ sizeof(bool)
всегда быть 1 (для 1 байта) или этот размер определяется реализацией?
c++
boolean
sizeof
implementation-defined-behavior
0xbadf00d
источник
источник
bool
?http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
«В Visual C ++ 4.2 заголовочные файлы Standard C ++ содержали typedef, приравнивающий bool к int. В Visual C ++ 5.0 и более поздних версиях bool реализован как встроенный тип размером 1 байт. Это означает, что для Visual В C ++ 4.2 вызов sizeof (bool) дает 4, а в Visual C ++ 5.0 и более поздних версиях тот же вызов дает 1. Это может вызвать проблемы с повреждением памяти, если вы определили элементы структуры типа bool в Visual C ++ 4.2 и смешиваете объект файлы (OBJ) и / или библиотеки DLL, созданные с помощью компиляторов 4.2 и 5.0 или более поздних версий ".
источник
Его реализация определена. Только
sizeof(char)
это1
стандарт.источник
CHAR_BIT
, определено вclimits
.См. Пункт 1 раздела 5.3.3:
источник