永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-03-08 07:03
  • 提问者网友:欺烟
  • 2021-03-07 22:33
c语言,有没有办法遍历枚举类型
最佳答案
  • 五星知识达人网友:执傲
  • 2021-03-07 23:40
在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的值就是所有有效的枚举元素值。
全部回答
  • 1楼网友:鱼忧
  • 2021-03-08 00:02
就是你声明的这个枚举变量的值,只能取其中的东西,比如: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
};
如何用一个通用的方法来遍历。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯