温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言中如何使用枚举类型

发布时间:2021-07-02 16:32:49 来源:亿速云 阅读:207 作者:Leah 栏目:互联网科技

本篇文章为大家展示了C语言中如何使用枚举类型,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

枚举是C语言里面所定义的一种基本数据类型,它可以使程序变得更加简介,更加易读。枚举的定义类似于我们数学里面的有限集合,如一周有7天,分别是SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY。那我们在编程时定义这些星期天数的时候,就可以将其定义为一个枚举,此后的使用中只要用到这个枚举类型定义的变量,其值也就是这七个星期天数中的任意一天。以下内容,我们就以这七个星期天数为例,开始我们枚举的讲解。
枚举的说明与结构和联合相似, 其形式为:
   
   
   enum 枚举名{
      标识符[=整型常数],  
      标识符[=整型常数],  
      ...
      标识符[=整型常数]
    } 枚举变量;

当然,我们也可以使用typedef关键词,将一个枚举定义成一种模板数据类型,其形式为:
   
   
   typedef enum
    {
      标识符[=整型常数],
      标识符[=整型常数],
      ...
      标识符[=整型常数]
    } 枚举数据类型;
与结构体和共用体不一样的是,一个枚举内部的成员不能被显示地指定数据类型,枚举中的成员只能是整型数值,这些数值你可以显示地指出来,或者使用编译器分配的默认值。另外,枚举内部的成员并不是变量,它们只不过是一系列的标识符而已,其属性和常量一致,因此在我们使用枚举内部成员的时候,除了初始化以外便不可以再随便对其赋值了。如,我们可以将一周七天定义成一种枚举类型。
   
   
   
typedef enum    
   {      SUNDAY= 0,      MONDAY= 1,      TUESDAY = 2,      WEDNESDAY = 3,      THURSDAY = 4,      FRIDAY = 5,      SATURDAY = 6    } EWeekday_t;//定义枚举类型    
   EWeekday_t Wekday; //定义枚举变量      
这里再注意一下枚举定义时和结构体联合体定义的区别,每一项数据成员之后都是以逗号结尾的,而不是分号。最后一项后面的逗号可以省略。
以上就是定义一个枚举类型,并且显示地指明这个枚举内部每一个标识符的值。一旦当枚举变量Wekday被定义好之后,我们就可以使用枚举定义时里面的标识符对其进行赋值了,如Wekday = THURSDAY。
当然,如果我们不想对每一项的枚举标识符进行赋值,我们也可以使用省略的写法来完成,只要显示地指明出第一个成员的值,后面的枚举值都会在第一个成员值的基础上往后增1。
typedef enum{  SUNDAY= 0,  MONDAY,  TUESDAY,  WEDNESDAY,  THURSDAY,  FRIDAY ,  SATURDAY} EWeekday_t;//定义枚举类型EWeekday_t Wekday; //定义枚举变量
上面这段代码,虽然没有显示地指明枚举中标识符的每个数值,但是它显示地指明了SUNDAY为0,那么编译器就会显示地在0的基础上分别递增1,并且按顺序赋给下面的标识符,如MONDAY就为1,TUESDAY就为2,依次类推。如图1所示,这里注意下,我们对枚举变量赋值时,虽然可以直接使用标识符,如Wekday= MONDAY,但是用printf函数打印时,我们还是需要使用“%d”将其作为整数打印出来,打印的结果也是一个个整型数字。
 C语言中如何使用枚举类型
图1枚举变量的打印

如果中途对枚举中某一标识符再赋值,那么这个被赋值标识符后面的标识符都会顺延加1。如图2所示。
C语言中如何使用枚举类型
图2 中途修改枚举标识符的值

当然,枚举中标识符的值可以出现重复,但无论怎么变,枚举中的标识符都满足一条规律,即显式指明标识符后面的标识符都会增1。如图3所示,我们将标识符WEDNESDAY再显示地指明为0,那么其后面的标识符都会从0开始自增。
C语言中如何使用枚举类型
图3 枚举标识符显式重复指明数值
还需要注意一点的是,在C语言中,枚举只是一种让程序变得明了的手段,并不能对变量的值进行限定,这一点很重要,因此,你可以对枚举任意赋值。对于MinGW来说,哪怕直接对枚举变量赋值浮点数,编译器也不会抛出警告,最多将其作为整数来处理。如图4所示。
C语言中如何使用枚举类型


上述内容就是C语言中如何使用枚举类型,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI