C++ 从入门到项目实践(超值版)
上QQ阅读APP看书,第一时间看更新

4.5 枚举类型(enum)

如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。

1. 声明枚举类型

enum  类型名  {  枚举常量列表  };

类型名是变量名,指定枚举类型的名称。枚举常量列表也叫枚举元素列表或枚举常量,列出定义的枚举类型的所有可用值,各个值之间用“,”分开。

例如:

    enum    weekday{sun,  mon,  tue,  wed,  thu,  fri,  sat};

上面声明了一个枚举类型weekday,大括号中sun,mon,…,sat等表示这个类型的变量的值只能是以上7个值之一,它们是用户自己定义的标识符。

2. 枚举变量的说明

枚举变量有多种声明方式:

(1)枚举类型定义与变量声明分开。

例如:

变量a,b,c的类型都定义为枚举类型enum Blue。

(2)枚举类型定义与变量声明同时进行。

例如:

    enum  Color  {  Blue,  Red,  Green,  Yellow  }a,b,c;

该语句还可以省略类型名,如以下的声明也是可以的:

    enum    {  Blue,  Red,  Green,  Yellow  }a,b,c;

(3)用typedef先将枚举类型定义为别名,再利用别名进行变量的声明。

例如:

这三种声明变量的方式相同。例如:

注意:同一程序中不能定义同类型名的枚举类型;不同枚举类型的枚举元素不能同名。

3. 枚举元素说明

将会为每个枚举元素分配一个整型值,默认从0开始,逐个加1。

【例4-5】编写程序,输出枚举元素的默认值。

(1)在Visual Studio 2017中,新建名称为“4-5.cpp”的Project5文件。

(2)在代码编辑区域输入以下代码。

【程序分析】本例输出的是每个枚举元素分配一个默认值。

在Visual Studio 2017中的运行结果如图4-14所示。

图4-14 枚举类型

也可以在定义枚举类型时对枚举元素赋值,此时,赋值的枚举值为所赋的值,而其他没有赋值的枚举值在前一个枚举值的基础上加1。

【例4-6】编写程序,输出枚举元素的值。

(1)在Visual Studio 2017中,新建名称为“4-6.cpp”的Project6文件。

(2)在代码编辑区域输入以下代码。

【程序分析】本例演示了为单个枚举元素赋值后,其他枚举元素的变化。

在Visual Studio 2017中的运行结果如图4-15所示。

图4-15 枚举元素的值

注意:枚举值是常量不是变量,不能在程序中再为枚举元素赋值。

4. 枚举型与整型的转换

枚举类型可以隐式地转换为int型。

【例4-7】编写程序,将枚举型变量的值赋给整型变量。

(1)在Visual Studio 2017中,新建名称为“4-7.cpp”的Project7文件。

(2)在代码编辑区域输入以下代码。

【程序分析】本例中先定义一个枚举类型的变量a,并为其赋值。然后定义一个int变量x,并初始化赋值。最后将变量a赋给变量x,并输出它们各自的值。

在Visual Studio 2017中的运行结果如图4-16所示。

图4-16 枚举类型转换成int型

int型不能隐式地转换为枚举型。

例如: