C++枚举类型的意义:

1)C++ 中会使用const或者#define定义整型常量,当整型常量有多个且之间的值的全部或部分有递加的时候,定义起来稍显繁琐,此时用枚举显得很简洁:

例如:

//使用const:

const int MON =1;
const int TUE=2;
const int WED=3;
const int THU=4;
const int FRI=5;
const int SAT=6;
const int SUN=7;

//使用#define//定义一个整型变量,为整型变量赋以下值

#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7

//使用枚举//定义一个枚举变量,此变量可以具有多个可能的值,

typedef  enum  weekDay{
MON=1,        //枚举类型中数据都是整型且从0开始,此处将第1个值设为1,则TUE ,        // 以下均从1开始递加
TUE,
WED,     //C++中逗号不是一条语句,不是一条语句就可以用回车分行
THU,      //这样有助于写注释
FRI,
SAT=7,   //可以再重新赋值,此时SAT=7,而不是6
SUN       //SUN=8,而不是7
}week_day;
week_day week=SUN;

注意:枚举类型是一种自定义的类型,故其形式和定义方法跟struct十分类似:

定义方法常用的有以下几种:

a)     

 typdef enum weekDay{   //weekDay可以省略
MON=1,
TUE,
WED,    
THU,     
FRI,
SAT=7,  
SUN
}week_day;//此处是有分号的,这根struct是完全一样的
//week_day 是weekDay的别名,二者都可以来定义一个枚举类型。
week_day  myWeek;
myWeek = SAT;//先定义,后赋值

b)     

enum weekDay{
MON=1,
TUE,
WED,    
THU,     
FRI,
SAT=7,  
SUN
};
weekDay myWeek=SUN;//直接初始化
c)
enum weekDay{
SUN=50
} myWeek=SUN;
//定义的同时直接初始化,这样就跟const int myWeek=50;一样

2)     枚举经常跟switch连用:

enum weekDay{
MON=1,
TUE,
WED,    
THU,     
FRI,
SAT=7,  
SUN
};
weekDay myWeek=SUN;//直接初始化
switch(myWeek)
{
  case MON:{ cout<<”not happy”<<endl;break;}
  case SUN:{cout<<”happy”<<endl;break;}
  default : break;
}
总结:枚举类型相较于#define的优势在于,定义常量简洁且易于管理,可以自动赋值且值不相等,类型安全检测。

猜你喜欢

转载自blog.csdn.net/modi000/article/details/80680960