搜索
写经验 领红包
 > 时尚

枚举嵌套(c语言中枚举用什么语言实现)

导语:嵌入式C语言之——枚举enum

引言

在日常编写代码或开源项目中,枚举(enum)数据类型到处可见,那么为什么要引入枚举这样的数据类型呢?枚举类型能带来哪些编程时的便利呢?首先枚举和宏定义有一定相似性,那么两者有什么区别呢?什么时候用枚举,什么时候用宏定义呢?今天我们就来聊聊枚举数据类型。

概念和一些特性

枚举(enum)在C语言中是一些符号常量集。通俗来说:枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定。枚举中的符号就表示一个自定义的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。

34;day Value = %d.\n&include <stdio.h>//枚举类型定义enum weekdays{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};int main(void){//定义枚举变量dayenum weekdays day1 = Monday;enum weekdays day2 = Tuesday;enum weekdays day3 = Wednesday;enum weekdays day4 = Thursday;enum weekdays day5 = Friday;enum weekdays day6 = Saturday;enum weekdays day7 = Sunday;printf(, day1);printf(, day2);printf(, day3);printf(, day4);printf(, day5);printf(, day6);printf(, day7);return 0;}

编译运行:

从结果来看,我们可以得出另外一个结论:枚举类型中的元素符号在没有特别指定其值时,其值是自增长的(+1)。

接下来,我们再改造下枚举定义,我们对其一些元素符号指定值,具体如下:

//枚举类型定义enum weekdays{Monday,Tuesday,Wednesday,Thursday=4,//指定“Thursday”值为4Friday,Saturday=9,   ////SaturdaySunday};

编译运行:

从结果中我们又可以总结出一个规律:我们可以指定枚举中任一元素符号的值,并且下一个符号的值是根据上的符号的值进行增长的。

枚举的作用

枚举本质是对一些数字,如0,1,2,3.... 进行符号编码,这样的好处就是编程时可以不用看数字而直接看符号,就能明白其实际含义,一目了然,否则我们很难或是很费劲看其他人写的代码(如代码中正确返回0,错误返回-1,而 用枚举TRUE, FLASE,就能非常清楚知道含义,使代码清晰化,这也是非常重要的编程技巧和习惯)。

另一方面,之前我们讲过的宏定义也是能将一些数字,转为用符号表示,但是宏定义并没有我们上述讲的枚举特性,每一个宏定义的符号或是表达式都是独立的,而我们枚举中的元素虽然是独立了,但是每个元素符号的值是有关联的(比如自增长)。

枚举的使用情景

当我们要定义的常量是一个有限集合时,如一个星期,星期一到星期日,一个月31天,一年12个月....等等,当然使用宏定义也行,但是使用枚举更适合。

而当一些常量符号之间无关联,或者是无限的情况下,更适合用宏定义。

总结

在C语言中是可以没有枚举类型的,我们完全可以用宏定义或者直接使用数字表示, 但是这样的编程习惯并不推荐,枚举的几点特性还是非常好用的,让我们的代码看起来非常工整,清晰:

枚举类型在定义时,如果第一个元素符号没有指定值,那么默认其值为0枚举类型中的元素符号在没有特别指定其值时,其值是自增长的(+1)我们可以指定枚举中任一元素符号的值,并且下一个符号的值是根据上的符号的值进行增长的

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小涵创作整理编辑!