C语言怎样取得枚举型的名字 而不是值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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<ENUM_END; i ++)
//使用枚举元素。
这个循环中,i的值就是所有有效的枚举元素值。 参考技术A typedef enum ONE,TWO,THREE num;
枚举变量名字 ONE TWO THREE ? 在编译器里也没有这个标识符吧,不能直接获取的。
实在要可以自己转换:
num aa = TWO;
char eName[10];
if(aa == TWO)
strcpy(eName,"TWO");本回答被提问者采纳 参考技术B 你不知道这变量是什么,那这变量有什么用?
c语言枚举类型enum用法
参考技术Ac语言枚举类型enum用法如下:
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2)DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1.
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。
我们可以将枚举理解为编译阶段的宏,使用格式:
enum typeName valueName1, valueName2, valueName3, ...... ;
typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量。
枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。
以上是关于C语言怎样取得枚举型的名字 而不是值的主要内容,如果未能解决你的问题,请参考以下文章