C++中有一种数据类型称为枚举(Enumeration)类型,它允许用户自己来定义一种数据类型,并且列出该数据类型的取值范围。
定义枚举类型的语法格式为:
enum 类型名{常量0,常量1,……,常量n-1};
定义枚举类型的位置应该在程序首次使用该类型名之前,否则程序无法识别该类型。枚举类型中列出的常量称为枚举常量。它并不是字符串也不是数值,而只是一些符号。
例如定义一周七天的日期类型,可以这样写:
enum day{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
这时候,程序中就有了一种新的数据类型——day,它的取值范围就是从Sunday到Saturday的七天。把类型设计好,就能来创建一个day类型的变量了:
day today=Sunday;
这样,day类型的变量today的值就是Sunday了。
实质上day型变量today中保存的是整数(枚举量的序号;0,1,2,…,n-1)。也就是说,一个整数和一个枚举常量一一对应了起来,要注意是一一对应,而不是相等。但是如果直接把整数赋值给today变量,则会发生错误。虽然枚举类型的实质是整数,但是计算机还是会仔细检查数据类型,禁止不同数据类型的数据互相赋值。另外,在一般情况下,枚举类型是不能进行算术运算的。
枚举变量的输入输出很不方便。这是由于枚举类型变量的值在程序中是以枚举量表示的,而在执行程序时是以整数(枚举量的序号)表示的 ,致使枚举类型的变量的值不能直接输入输出(可以借助switch…case语句输出枚举常量)。