枚举类型enum:
1、为什要用枚举类型?
如果变量中需要几种可能存在的值,那么就可以定义为枚举类型,就是将变量或对象可能存在的值一一列举出来。此外,对一些只有有限的几种可能值的数据对其合法性的检查也十分方便。
2、枚举类型声明形式:enum 枚举类型名 {变量值列表};
列如 enum Weekday{sunday,monday,tuesday,wednesday,thursday,friday,saturday};
它具有默认值从0开始依次为0、1、2……其中对于枚举元素按常量处理对其进行赋值是错误的,列如定义“sunday=0;”是非法的。若想定义sunday不从0定义,便可在声明类型时直接定义,但后面未定义的变量的值将以前面最近的变量定义的数为参考依次往后。列如
enum Weekday {sunday=7,monday,tuesday,wednesday,thursday,friday,saturday};
上述枚举中monday的值为8。
3、强制类型转换:因为枚举相当于是整数的子集,因此整数值不能直接赋值给枚举变量,需进行强制转换;此外该赋值的整数在枚举定义范围内应存在才能转换成功。
以下是错误代码:
```
enum Weekday{Sun,Mon,Tue,Wed,Thu,Fri,Sat};
Weekday day1,day2;
day2=1; 未进行强制转换
```
正确代码:
(int型转换成枚举型)
```
Weekday day1,day2;
int a=1;
day2=(Weekday)a; 进行强制转换
```
(不从0开始定义)
```
enum Weekday{Sun=7,Mon=1,Tue,Wed,Thu,Fri,Sat};
```
(枚举型转换成int型)
```
Weekday day1=Weekday.Mon;
int a=day1;
```
以下为枚举强制类型转换式列的运行过程