C语言中如何控制枚举类型占用空间的大小
C语言中枚举类型会根据其值的取值范围由编译器自动决定枚举变量所占的空间,如何强制指定其所占空间的大小呢?...
C语言中枚举类型会根据其值的取值范围由编译器自动决定枚举变量所占的空间,如何强制指定其所占空间的大小呢?
展开
3个回答
推荐于2018-05-10 · 知道合伙人软件行家
关注
展开全部
在枚举类型后面设置对应的 :类型 即可。比如 enum cnum : char (这里加上 :char)
#include <stdio.h>
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类型的大小作了不同的定义,而程序员是不能认为的修改枚举类型占用空间的。
值的整数就可以了,那么就是说可以是char、short和int。”
不同的C编译器,对enum类型的大小作了不同的定义,而程序员是不能认为的修改枚举类型占用空间的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
枚举类型所占大小有其基础类型决定,c语言中无法更改其基础类型,默认为int,所以是一个字的大小,32为是4个字节。C++中根据其定义的基础类型,大小有所不同:public enum TimeofDay:unsigned long
{
Morning,
Afternoon,
Evening
} ;
{
Morning,
Afternoon,
Evening
} ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询