枚举的句法和结构很相似,例如下面语句:
enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet}
该语句具有两个作用:
- 使spectrum 成为新类型的名称;
- 使red、orange...等作为符号常量,它们对应的值分别为(0~7);
枚举具有的特殊语法特性:
- 可以用枚举名声明枚举变量如:spectrum band ;
- 在不进行强制转换的时候只有同一个枚举量之间可以进行赋值;
band = blue ; // valid
band = 2000 ; // invalid
- 并且对于枚举只定义了赋值运算符;
band = orange ;// valid
band++ ; // invalid
band = orange + red ; // invalid
- 枚举量是整型,可被提升为int 类型,但int 不能转换为枚举(除强制转换以外);
int color = blue ; // valid
band = 3 // invalid ,int not converted to spectrum
color = 3 + red ; // valid
- int可以通过强制转换,而变成枚举类型;
band = (spectrum) 3 ;