Sizeof(bool)?

Ну, во первых не “bool и int”, а “bool и unsigned int”. А во-вторых, не взаимозаменяемы, а предъявляют одинаковые требования на представление объекта, представление значения и выравнивание.

Вы точно bool с BOOL не перепутали?

может иметь любое значение, которое приспичит разработчикам реализации (точно также, как и sizeof любого фундаментального типа, кроме “узкого” char, который всегда равен 1).

Кстати, когда я говорю “любого фундаментального типа”, я имею в виду именно “любого”. Хотя с типом void возникает коллизия. С одной стороны, он incomplete, а, значит, sizeof к нему неприменим, но, с другой стороны, он фундаментальный тип, а sizeof применим ко всем фундаментальным типам. В реализациях обычно позволяют применять к нему sizeof, но иногда делают предупреждение о бессмысленности этой действа.

1 лайк