C语言中如何控制枚举类型占用空间的大小

C语言中枚举类型会根据其值的取值范围由编译器自动决定枚举变量所占的空间,如何强制指定其所占空间的大小呢?... C语言中枚举类型会根据其值的取值范围由编译器自动决定枚举变量所占的空间,如何强制指定其所占空间的大小呢? 展开
 我来答
lgao622
推荐于2018-05-10 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6550
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部

在枚举类型后面设置对应的  :类型   即可。比如 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;
}

斯坦恩贝格(北京)电子有限公司
2015-08-28 · 斯坦恩贝格生产销售“希曼顿”牌固态继电器、电力调整器,温控器
斯坦恩贝格(北京)电子有限公司
斯坦恩贝格生产销售“希曼顿”牌固态继电器、电力调整器,温控器
向TA提问
展开全部
标准C并没有明确规定枚举类型占用空间的大小,标准中只是说“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,同时标准中也说明了:“枚举类型中的枚举子的值必须要能够用一个int类型表述”,也就是说,枚举类型的尺寸不能够超过int类型的尺寸,但是是不是必须和int类型具有相同的尺寸呢?上面的标准已经说得很清楚了,只要能够容纳最大的枚举子的
值的整数就可以了,那么就是说可以是char、short和int。”
不同的C编译器,对enum类型的大小作了不同的定义,而程序员是不能认为的修改枚举类型占用空间的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
peterlee_doc
2013-09-25
知道答主
回答量:5
采纳率:0%
帮助的人:2.8万
展开全部
枚举类型所占大小有其基础类型决定,c语言中无法更改其基础类型,默认为int,所以是一个字的大小,32为是4个字节。C++中根据其定义的基础类型,大小有所不同:public enum TimeofDay:unsigned long
  {
  Morning,
  Afternoon,
  Evening
  } ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式