C语言基础之枚举类型解析

大家好,我是电源漫谈,很高兴和各位一起分享我的68原创文章,喜欢和支持我的工程师,一定记得给我点赞、收藏、分享。

枚举类型是经常在代码中看到的变量类型,本文通过简要介绍及测试,解析一下这种类型的变量的基本概念。

.枚举类型的概念

首先看一下枚举类型的概念,一般来说,枚举类型是一个用户创建的有限范围的整数类型,本质上一个整数int数据类型,但是它仅仅包含一些指定的值的列表,而这些值都用符号常量来表示。同样的,类似于其它变量类型的定义,这些符号常量会和那些具有同样类型的枚举变量一起使用。

.创建枚举类型及变量

具体如何创建一个枚举类型呢?我们可以创建一个有序列表的常数表,这个常数表中每一个常数标签值都比前一个值大1,第一个数据是0,这是默认的情况。

图1 枚举类型语法定义

图2 枚举类型的示例

如上图2的示例中,我们定义了一个weekday这样一个枚举变量,其中包含七个常数标签,SUN,MON,TUE,WED,THR,FRI,SAT这七个常数标签。默认情况下,它们的值为从06的整数。

实际上这里有一种特殊情况,任何一个常数标签,都可以指定为一个具体的值,而后面跟随的标签都会在此基础上顺序增加1,如图3所示。

图3 特殊指定常数标签的值

接下来,我们再说一下枚举变量的定义的方式,一般可以和枚举类型一起写,也可以单独去写变量的定义,如下图4参考。

图4 枚举变量的定义方式

图5 变量定义的方式示例

上图中示例中,第一个例子是定义变量和定义类型放在一起方式,第二个例子是在定义了类型后,就像普通变量一样,单独定义了变量。

图6 不写类型名直接定义变量名的方式

在实际使用枚举类型时,也可以不写类型名,但是这种情况需要将类型定义和变量定义放在一起写。

图7 变量的值的使用

当定义了枚举类型,以及枚举变量后,对于变量的值可以直接使用任何已经包含进去的常数符号,当然也可以使用具体的整数,这个在代码中都是识别的,如图7所示。

三.枚举变量实测

这里我们定义一个枚举变量FilterType,及定义一个枚举变量filter,代码中其它部分功能,由于篇幅所限,我们此处不详述。

图8 定义枚举类型及变量

图9 调试代码查看常数标签

将枚举变量filter赋值一个常数标签,HIGHPASS,我们在调试结果中查看其值。

图10 常数标签的值的显示

在上述结果中,我们可以看出HIGHPASS的值为2BANDSTOP,LOWPASS,HIGHPASS,BANDPASS的值相应为0123满足期望的定义。

此处将filter变量定义为HIGHPASS时,filter=HIGHPASS;

则可以在串口窗口中得到如下结果。

图11 HIGHPASS打印输出

filter变量定义为LOWPASS时,filter=LOWPASS;

则可以在串口窗口中得到如下结果。

图12 LOWPASS打印输出

以上结果均符合代码设置,通过switch case打印了相关的枚举常数值。

前述部分,我们提到用户可以直接指定常数标签的值,这里我们也测试一下。

图13 灵活定义常数标签的值

图14 调试代码查看枚举标签常数值

图15 常数标签值的查看

通过调试窗口,我们可以看到,人为定义PAUL4,则BILL5,人为定义GARY7,则WEBBABY89,符合期望的定义,第一个数据ROB还是0.

总结,使用枚举的好处,可以让代码的可读性更好,更方便维护,当需要增加额外的常数表标签值时,可以直接在常数枚举类型列表中增加,而不用更改其它部分的代码。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 4
收藏 4
关注 248
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧