枚举类型的大小是多少?
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 :(得分:0)
实现定义了枚举的大小。通常它们的大小等于sizeof(int),因为在C枚举器中类型为int。虽然即使在C枚举中本身也有实现定义的兼容类型。来自C标准
每个枚举类型应与char(一个有符号整数)兼容 类型或无符号整数类型。类型的选择是 实现定义
在C ++中,枚举具有基础类型的大小。如果没有另外指定,您可以修复指定enum-base或使用具有基础类型int的范围枚举。