Размер перечислений

Каков размер перечисляемого типа?

int main()
{
enum boolean{fl,tr};
int sbool = sizeof(boolean);
boolean a=fl,b=tr;
cout<<"size of Bool Enum: "<<sbool<<endl;
enum months{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};
int smon = sizeof(months);
cout<<"size of months enum: "<<smon<<endl;
}

Я написал приведенный выше код, и я получил sbool и smon, чтобы быть 4. Может ли кто-нибудь объяснить, почему?

0

Решение

Это определяется реализацией, какой размер будет иметь перечисление. Обычно они имеют размер, равный sizeof (int), потому что в C перечислители имеют тип int. Хотя даже в C перечислениях сами имеют совместимый с реализацией тип. Из стандарта С

Каждый перечисляемый тип должен быть совместим с char, целым числом со знаком
тип или целое число без знака. Выбор типа
от реализации

В C ++ перечисление имеет размер базового типа. Вы можете исправить это, указав enum-base или используя перечисление с областью действия, имеющее базовый тип int, если не указано иное.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]