永发信息网

c语言,有没有办法遍历枚举类型

答案:2  悬赏:0  手机版
解决时间 2021-03-08 07:03
c语言,有没有办法遍历枚举类型
最佳答案
在C语言中,枚举类型是被当做int或者unsigned int类型来处理的,所以按照C语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,可以实现有条件的遍历。
1 枚举类型必须连续。
由于枚举类型支持如下方式定义:
enum
{
ENUM_0,

ENUM_10 = 10,

ENUM_11

};
这样就会导致枚举类型不连续,这种枚举无法遍历。

2 枚举类型中人为加入起始及结束标记。
enum
{
ENUM_START,

ENUM_0,

ENUM_1,

ENUM_2,

ENUM_END

};
可以看到,在这个枚举类型中,人为加入可ENUM_START, 和ENUM_END。中间的ENUM_0,ENUM_1,ENUM_2才是实际的有效数据。当后续需要增删枚举元素时,也要保证ENUM_START, 和ENUM_END分别为最小和最大值。

满足以上两种条件下,就可以做枚举的遍历了,参考代码如下:
int i;
for(i = ENUM_START+1; i{
//使用枚举元素。

}
这个循环中,i的值就是所有有效的枚举元素值。
全部回答
就是你声明的这个枚举变量的值,只能取其中的东西,比如:enum {Monday,Tuesday,Wednesday,Thursday,Friday} weekday;那weekday这个变脸的值只能是{}中的值。(他们分别对应数字0,1,2,3,4,因为枚举型变量也是整型)追问枚举类型的元素,不一定是从0开始,+1递增的。
比如,
typedef enum
{
A,
B,
C = 6,
D,
E,
F,
G,
H
}alpha_enum;
enum liquid
{
OUNCE = 1,
CUP = 8,
PINT = 16,
QUART = 32,
GALLON = 128
};
如何用一个通用的方法来遍历。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
美国博士资格考试没过怎么办
I would still like us to be friends.no,i m
北京国际艺苑皇冠假日酒店-游泳池地址有知道
魔兽争霸3地图编辑器如何使疾病云雾不受影响
中国银行定期存款银行密码输错三次怎么办
两岁的小侄女过生日送什么礼物好,各位来提点
【微微风簇浪】微微风簇浪,散作河满星.叫什么
我们杀鱼的时候鱼会疼吗?总下不去手~
你好,弯头的角度怎么计算?
天文类的节目哪个比较好看?
大正广告装饰印刷地址在什么地方,想过去办事
个子1.86睡2米圆床能睡下么?
全球通怎样办理归属地转移?
华为P6为什么通知栏上面有很多图标,但是下拉
求解决!头发干枯,开叉,掉发,用什么牌子的
推荐资讯
写字楼物业费包括什么
违章代码1352A
把电话拉黑名单在哪里拉啊
如果我在手机京东上买了一件东西,我想把这件
【职业规划咨询机构】许多职业咨询机构和心理
空间花藤怎么改名
新百伦和斯凯奇哪个好一点
人一生中有喜怒哀乐,对于这些有撒看法.
如果行李箱的密码不记得了怎么办
见过最恶心最牛的客服就是淘宝垃个圾了,怎么
这个大清铜币汴字值多少钱?文十的
有个女的说要当我小弟 是干嘛?什么意思?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?