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用法

参考技术A

c语言枚举类型enum用法如下:


(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。


(2)DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。


(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1.


(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。


(5) 枚举型是预处理指令#define的替代。


(6) 类型定义以分号;结束。

enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。


我们可以将枚举理解为编译阶段的宏,使用格式:


enum typeName valueName1, valueName2, valueName3, ...... ;

typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量。


枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

以上是关于C语言怎样取得枚举型的名字 而不是值的主要内容,如果未能解决你的问题,请参考以下文章

enum C语言

C语言中,对枚举值赋值是啥意思?

C语言枚举类型,知道这些你就会了

c语言:枚举类型

c语言中float型的精度问题

在C语言中,怎样判断两个整型的数相等