枚举是一种由编程者自定义的数据类型如果一个变量只有几种可能的取值,则可以定义为枚举类,比如一周只有七天,一个电脑城只有几种固定的品牌的电脑
enum 枚举类型名 标识符;
#include<iostream>
void main()
{
enum Weekday {sun,mon,tue,wed,thu,fri,sat};
Weekday day1, day2;
int in1, in2;
cout << "请输入两个0到6之间的整数:";
cin >> in1 >> in2;
day1 = (Weekday)in1;//in1和in2只能是枚举类型里的几种情况
day2 = (Weekday)in2;
if (day1 == day2) {
cout << "您输入的都是";
switch (day1) {
case sun:cout << "周日\n"; break;
case mon:cout << "周一\n"; break;
case tue:cout << "周二\n"; break;
case wed:cout << "周三\n"; break;
case thu:cout << "周四\n"; break;
case fri:cout << "周五\n"; break;
case sat:cout << "周六\n"; break;
}
}
else
{
cout << "您输入的两天分别是";
switch (day1)
{
case sun:cout << "周日和"; break;
case mon:cout << "周一和"; break;
case tue:cout << "周二和"; break;
case wed:cout << "周三和"; break;
case thu:cout << "周四和"; break;
case fri:cout << "周五和"; break;
case sat:cout << "周六和"; break;
}
switch (day2)
{
case sun:cout << "周日\n"; break;
case mon:cout << "周一\n"; break;
case tue:cout << "周二\n"; break;
case wed:cout << "周三\n"; break;
case thu:cout << "周四\n"; break;
case fri:cout << "周五\n"; break;
case sat:cout << "周六\n"; break;
}
}
}
枚举类在很多语言里都有出现,使用方法和规范几乎都大同小异,在日常的开发中实用性应该挺强的。
声明了枚举类就可以定义枚举变量了,方法如下:
enum 枚举类型名 标识符;
例如:enum Weekday aday;
也可以把声明枚举类型和定义枚举类型变量和为一步这时可以不用声明枚举类型名:
enum {变量值列表} 标识符;
例如:{sum,mon,tue,wed,thu,fri,sat} aday;
变量aday的值只能是sun到sat之一,
例如:aday=sat;
声明枚举类型时,变量值列表中的标识符是一些符号常量,每一个都对应一个确定的整数型。第一个符号常量的值为0,第二个符合常量的值为1,以此类推。
也可以在声明枚举类型时自行指定符号常量的值,指定的值必须是整数
例如:enum Weekday{sun,mon,tue=5,wed,thu,fri,sat};
其中,sun=0,mon=1,tue=5,wed=6,thu=7,fir=8,sat=9;
不能把一个整数值直接赋值给以恶搞枚举类型变量,下面的语句是错误的:
aday=2;(错误)
但是可以通过强制转换将整数值赋值给枚举类型的变量:
aday={Weekday}2;
枚举类型变量之间可以进行关系运算。