枚举类型
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
创建枚举,需要使用关键字 enum。枚举类型的一般形式为:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
} 枚举变量;
如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。
例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。
enum color { red, green, blue } c;
c = blue;
默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。
enum color { red, green=5, blue };
在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。
枚举类型在使用之前定义;
定义变量:
1.类型定义与变量声明同时进行:
enum color { red, green, blue } c = red;
2. 使用标识符赋值:
enum color { red, green, blue };
enum color c = red;
3.使用整型值:
enum color { red, green = 5, blue };
enum color c = 5;
关于枚举值的声明:
1.同一作用域下不能有两个相同的枚举类型:
2.同一作用域下的两个枚举类型不能有相同的枚举值:
enum color1 { red, green };
enum color2 { red, blue };
3.不能将非枚举量赋给枚举变量,但可以将枚举量赋给非枚举变量。如:
int a = red;
这是允许的,因为枚举量是符号常量,这里的赋值编译器会自动把枚举量转换为int类型。
4.枚举类型可进行赋值运算,但不可以进行加减运算。若枚举值为0-6,若进行加减运算,可能会使枚举值超出0-6的范围。