枚举类型enum初步(很高端的操作呀)

什么是枚举类型???

枚举类型的诞生,我推测是这样的:
远古时期,一群程序猿聚在一起编写代码
为了提高工作效率,每只程序猿只负责一小部分的代码编写
这个程序中有一部分的功能是需要辨识RGB三种颜色
程序猿小M用0表示R,1表示G,2表示B,并且非常迅捷完成了ta的部分,
然而ta的同伴们在看ta的代码时,并搞不清楚0,1,2的具体意义
程序猿小M就需要挨个向ta的同伴们解释,因此感到十分烦躁
小M就想:为什么我们不能给这些数字起个名字,就叫“R”,“G”,“B”
这样就方便多了呀

于是,就有了enum


枚举类型长什么样???

enum < 枚举类型名 > {枚举值表}

例如:

enum Day{SUN,MON,TUE,WED,THU,FRI,SAT};
enum Month{JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEO,OCT,NOV,DEC};

在这里我们注意到了一个奇怪的潜规则:

  • 枚举类型首字母大写
  • 枚举值全文大写

这个定义干了一件什么事呢???
enum Day{SUN,MON,TUE,WED,THU,FRI,SAT};

S U N , M O N , T U E , W E D , T H U , F R I , S A T SUN,MON,TUE,WED,THU,FRI,SAT 叫做枚举值
每个枚举值都对应一个整型值
通常第一个枚举值对应常量值0,第二个对应1,一次递增类推

SUN=0,MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6

在定义枚举类型时,也可以指定枚举值对应的常量,后续值依次递增类推

enum Day{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};
//
SUN=7,MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6
注意

枚举值表中枚举值不能同名,但是可以对应相同的整型常量值

enum Test{A=3,B,C=3,D,A};
//error

enum Test{A=3,B,C=3,D=1,E};
//okk
A=3,B=4,C=3,D=1,E=2

变量声明方法???

我们在定义一个enum的时候,实际上是自定义一种崭新的数据类型
数据类型就需要声明变量:

enum Test tt;
//or
Test tt;

使用方法???
enum Test{A=3,B,C=3,D=1,E};

tt=A;
//okk 
//tt=3;

tt=3;
//error!!!

tt=static_cast<Test>(5);
//okk
//tt=5;
//数值不一定要是Test中已定义的

简单说两句???

归根结底,枚举类型enum实际上就是一个数集

所有定义为该类型的变量:

  • 一定是个整型
  • 只能取定义时声明过的整数值
  • 不能用数字赋值,只能用数字对应的标志赋值
  • 可以进行整型的关系运算(==,>,<,>=,<=)

你问我enum的作用?
也许就是提高了代码可读性吧。。。
(感谢前辈程序猿小M /手动狗头)

发布了941 篇原创文章 · 获赞 192 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/wu_tongtong/article/details/103396331
今日推荐