2.3.5 枚举常量

    枚举(Enum)常量是一种用户自定义的类型,定义的基本格式如下所示。


    enum枚举类型名{枚举常量1[=整型常数],枚举常量2[=整型常数],……}[变量名列表]花括号中的内容称做枚举表,其中的每一项称为枚举常量,换言之,枚举表是枚举常量的集合。枚举表中每项后的“=整型常数”是给枚举常量赋初值,用方括号代表这步可以省略,如果不给枚举常量赋初值,编译器会为每一个枚举常量赋一个不同的整型值,第一个为0,第二个为1,等等。当枚举表中某个常量赋值后,其后的成员则按依次加1的规则确定其值。在定义枚举类型时,可同时定义一些变量属于这种类型。 enum day{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}currentDay;这样就定义了一个称做day的枚举类型,该类型包含7个枚举常量(Sunday到Saturday),编译器自动令Sunday为0,Monday为1,依次类推。在定义枚举变量的同时,声明了枚举变量currentDay为day类型。currentDay只能取枚举表中的某项作为其值,枚举变量不允许在其枚举表成员之外取值。当然,也可以先定义枚举类型,而后再声明枚举变量,如下所示。 enum day{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; day currentDay;

    那枚举常量到底是什么类型呢?我们来看代码2.9给出的例子。

    代码2.9 使用枚举常量Enum


    <———————————————-文件名:example209.cpp———————————> 01 #include<iostream> 02 int main() 03 { 04 using namespace std; 05 //定义枚举类型day 06 enum day{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; 07 day currentDay;//声明一day型变量currentDay 08 currentDay=Tuesday;//为currentDay赋值 09 cout<<"Current day is"<<currentDay<<endl;//输出 10 return 0; 11 }

    【代码解析】代码第6行使用了enum关键字,定义枚举常量day。

    输出结果如下所示。


    Current day is 2可见,枚举常量实际上是一些整型数的名称,但是,不允许直接用数字来定义枚举类型,必须使用合法的C++标识符作为枚举常量的名字,下列用法是错误的。 enum day{0,1,2,3,4,5,6};

    使用枚举常量主要有以下两个方面的好处。

    ❑提高程序的可读性,用有意义的名字来代替数字。

    ❑限定了枚举变量的取值范围,如代码2.9中的currentDay只能取列表中Sunday到Saturday中的一个。

    技巧在对枚举常量赋初值的时候,允许几个枚举常量具有相同的值。