枚举类型是经常在代码中看到的变量类型,本文通过简要介绍及测试,解析一下这种类型的变量的基本概念。
一.枚举类型的概念
首先看一下枚举类型的概念,一般来说,枚举类型是一个用户创建的有限范围的整数类型,本质上一个整数int数据类型,但是它仅仅包含一些指定的值的列表,而这些值都用符号常量来表示。同样的,类似于其它变量类型的定义,这些符号常量会和那些具有同样类型的枚举变量一起使用。
二.创建枚举类型及变量
具体如何创建一个枚举类型呢?我们可以创建一个有序列表的常数表,这个常数表中每一个常数标签值都比前一个值大1,第一个数据是0,这是默认的情况。
图1 枚举类型语法定义
图2 枚举类型的示例
如上图2的示例中,我们定义了一个weekday这样一个枚举变量,其中包含七个常数标签,SUN,MON,TUE,WED,THR,FRI,SAT这七个常数标签。默认情况下,它们的值为从0到6的整数。
实际上这里有一种特殊情况,任何一个常数标签,都可以指定为一个具体的值,而后面跟随的标签都会在此基础上顺序增加1,如图3所示。
图3 特殊指定常数标签的值
接下来,我们再说一下枚举变量的定义的方式,一般可以和枚举类型一起写,也可以单独去写变量的定义,如下图4参考。
图4 枚举变量的定义方式
图5 变量定义的方式示例
上图中示例中,第一个例子是定义变量和定义类型放在一起方式,第二个例子是在定义了类型后,就像普通变量一样,单独定义了变量。
图6 不写类型名直接定义变量名的方式
在实际使用枚举类型时,也可以不写类型名,但是这种情况需要将类型定义和变量定义放在一起写。
图7 变量的值的使用
当定义了枚举类型,以及枚举变量后,对于变量的值可以直接使用任何已经包含进去的常数符号,当然也可以使用具体的整数,这个在代码中都是识别的,如图7所示。
三.枚举变量实测
这里我们定义一个枚举变量FilterType,及定义一个枚举变量filter,代码中其它部分功能,由于篇幅所限,我们此处不详述。
图8 定义枚举类型及变量
图9 调试代码查看常数标签
将枚举变量filter赋值一个常数标签,HIGHPASS,我们在调试结果中查看其值。
图10 常数标签的值的显示
在上述结果中,我们可以看出HIGHPASS的值为2,BANDSTOP,LOWPASS,HIGHPASS,BANDPASS的值相应为0,1,2,3满足期望的定义。
此处将filter变量定义为HIGHPASS时,filter=HIGHPASS;
则可以在串口窗口中得到如下结果。
图11 HIGHPASS打印输出
将filter变量定义为LOWPASS时,filter=LOWPASS;
则可以在串口窗口中得到如下结果。
图12 LOWPASS打印输出
以上结果均符合代码设置,通过switch case打印了相关的枚举常数值。
前述部分,我们提到用户可以直接指定常数标签的值,这里我们也测试一下。
图13 灵活定义常数标签的值
图14 调试代码查看枚举标签常数值
图15 常数标签值的查看
通过调试窗口,我们可以看到,人为定义PAUL为4,则BILL为5,人为定义GARY为7,则WEB和BABY为8及9,符合期望的定义,第一个数据ROB还是0.
总结,使用枚举的好处,可以让代码的可读性更好,更方便维护,当需要增加额外的常数表标签值时,可以直接在常数枚举类型列表中增加,而不用更改其它部分的代码。
//关于知识产权:
1.本公众号主要用于个人学习笔记归纳及分享,无任何商业目的。
2.本公众号所发表言论及观点不代表本人现任公司及前任公司,如有错误请不吝指正。
3.如果认为有帮助可以分享转发,如需转载公众号内容,请留言告知。
4.有些图片来自网络,如有侵权,请联系删除。
5.有问题可通过公众号关注页或者文末添加本人微信加入技术交流群畅聊。
更多好文,请点击下方关注“电源漫谈”公众号,共同探讨电源的方方面面!一起学习进步!
您的关注和点赞就是对原创最大的支持!
关注,分享,点赞,在看支持优质内容!
加我微信拉你进200+成员的技术讨论群,注意备注:地域_行业_昵称