C语言中为什么要使用enum
Posted xingjiarong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中为什么要使用enum相关的知识,希望对你有一定的参考价值。
转载请注明出处,否则将追究法律责任http://blog.csdn.net/xingjiarong/article/details/47275971
在C语言中有一个关键字是enum,枚举类型,不知道大家平时用吗,但是enum关键字在有些时候是非常方面的,下面说一下使用enum关键字的几种情况。
一、一次定义多个常量。
比如说我们的程序中处理问题时与星期几有关,可能要将星期一转换为数字1,星期二转换为数字2,一直到数字7,在不用enum关键字的情况下,可以使用define来定义,但是大家会觉得很麻烦,因为你要一个一个的定义,星期的还好说,只有7天,如果是月份呢,一年有12个月份,那就要写12个define,非常的不方面,如果利用enum的话就会非常的方便。
#include<stdio.h>
enum week Mon=1,Tue,Wed,Thu,Fri,Sat,Sun;
int main()
printf("%d",Tue);
return 0;
这样定义以后,Mon的值为1,Tue的值为2,Wed的值为3,一次类推。
然后就可以像使用define之后的常量一样的使用定义的7个值了。
如果开头不写Mon=1的话,Mon的默认值为0,然后从0开始增长。例如:
enum color red,blue,green,yellow;
如果这样定义的话,red的值为0,blue的值为1,然后一次增长。
如果从中间开始赋值的话:
enum color red,blue,green=5,yellow;
那么red到blue是按照默认的从0开始增长的,green就是定义的值5,然后green之后的值都是从5开始增长的。
当然你也可以为每个枚举的变量都赋值,这样就和全都用define定义是一样的了,如果枚举中有某个值没有被赋值,那么它将是从前一个赋值的变
量开始,一次增加1.
二、限定变量的范围
比如我们的应用程序中要处理有关月份的东西,显然月份只能取1-12中的某个数字,为了保证程序的正确性和健壮性,我们应该使用enum。
#include<stdio.h>
enum Month Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec;
int main()
enum Month a = Feb;
printf("%d",a);
return 0;
比如像这样,定义的枚举类型 a 的取值只能是那12个变量中的一个,如果赋予了其他的变量,编译器就会报错。
使用enum可以有一下几种方法:
1、在定义enum的同时,声明变量:
enum Month Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec a,b;
这样就声明了两个枚举类型a和b
2、定义完enum之后再声明变量:
enum Month Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec;
enum Month a = Feb;
3、定义匿名的枚举变量
enum Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec a;
这样的话,只能使用a这一个枚举类型的变量,不能再定义其他的枚举类型。
以上是关于C语言中为什么要使用enum的主要内容,如果未能解决你的问题,请参考以下文章
C语言枚举和C++枚举的区别?enum class(C++11强类型枚举(Strongly-typed enums)强枚举 Scoped Enumerations)(C++98弱枚举类型)
C语言枚举和C++枚举的区别?enum class(C++11强类型枚举(Strongly-typed enums)强枚举 Scoped Enumerations)(C++98弱枚举类型)
C语言枚举和C++枚举的区别?enum class(C++11强类型枚举(Strongly-typed enums)强枚举 Scoped Enumerations)(C++98弱枚举类型)