枚举类型
枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
//语法 enum <类型名> {<枚举常量表>};
- 1.关键字enum:指明其后的标识符是一个枚举类型的名字。
- 2.枚举常量表:由枚举常量构成。
“枚举常量"或称"枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以==","间隔==,且必须各不相同。取值类型与条件表达式相同。
//枚举类型的定义 enum color {RED, BLUE, WHITE, BLACK}; //定义枚举类型color enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; //定义枚举类型week
枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值。
默认状态下,这个整数就是所列举元素的序号,序号从0开始。
可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按默认方式取值,而指定值之后的枚举常量按依次加1的原则取值。
各枚举常量的值可以重复。
enum fruit { apple, orange, banana = 1, peach, grape } //枚举常量apple=0,orange=1, banana=1,peach=2,grape=3。 enum week { Sun = 7, Mon = 1, Tue, Wed, Thu, Fri, Sat }; //枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6
枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。
enum letter {'a','b','c'}; //枚举常量不能是字符常量 enum year{2022,2023,2024,2025}; //枚举常量不能是整型常量 enum letter {a,b,c}; enum year{y2022,y2023,y2024,y2025};
使用枚举变量
定义枚举类型之后,就可以定义该枚举类型的变量。
//语法 enumName enumVarName;//枚举名 枚举变量名; enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; week w1,w2; //类型与变量同时定义,类型名可省略 enum {Sun, Mon, Tue, Wed, Thu, Fri, Sat} w1,w2;
枚举变量的值只能取枚举常量表中所列的值,就是整型数的一个子集。
枚举变量占用内存的大小与整型数相同。
枚举变量只能参与赋值和关系运算以及输出操作,参与运算时用其本身的整数值
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; week weekday1,weekday2; weekday1 = Sun; //正确 //weekday1 = San;//错误 只能取枚举常量表中所列的值,就是整型数的一个子集。 enum week { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; week weekday1, weekday2; weekday1 = Sun; weekday2 = Mon; if (weekday1 < weekday2) { //只能参与赋值和关系运算 cout << “day1 < day2”; } cout << weekday2 << endl;//输出操作 cout << weekday1 + weekday2 << endl; int num = weekday1;
枚举变量可以直接输出,但不能直接输入。
不能直接将常量赋给枚举变量。
不同类型的枚举变量之间不能相互赋值。
枚举变量的输入输出一般都采用switch语句将其转换为字符或字符串。