在枚举类型后面设置对应的 :类型 即可。比如 enum cnum : char (这里加上 :char)
#include
enum cnum : char // 加上 :char 则元素是 char 类型
{
c_one, c_two, c_three
};
enum snum : short // 加上 :short 则元素是 short 类型
{
s_one, s_two, s_three
};
enum inum : int // 加上 :int 则元素是 int 类型
{
i_one, i_two, i_three
};
int main()
{
printf("cnum: %d\nsnum: %d\ninum: %d\n",
sizeof(cnum), sizeof(snum), sizeof(inum));
return 0;
}
标准C并没有明确规定枚举类型占用空间的大小,标准中只是说“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,同时标准中也说明了:“枚举类型中的枚举子的值必须要能够用一个int类型表述”,也就是说,枚举类型的尺寸不能够超过int类型的尺寸,但是是不是必须和int类型具有相同的尺寸呢?上面的标准已经说得很清楚了,只要能够容纳最大的枚举子的
值的整数就可以了,那么就是说可以是char、short和int。”
不同的C编译器,对enum类型的大小作了不同的定义,而程序员是不能认为的修改枚举类型占用空间的。
枚举类型所占大小有其基础类型决定,c语言中无法更改其基础类型,默认为int,所以是一个字的大小,32为是4个字节。C++中根据其定义的基础类型,大小有所不同:public enum TimeofDay:unsigned long
{
Morning,
Afternoon,
Evening
} ;