1.枚举(c++)
enum Color{red,blue,yellow,green}; //定义枚举,red、blue等作为符号常量,对应的是数值0~3
Color color; //声明这种类型的变量
color=blue; //只能用枚举量来赋值这种枚举变量,虽然blue的值是1,但是color=1是不对的
//没有为枚举定义算术运算,即color++,color=blue+green是错的
int _color=blue;
_color=2+red; //枚举量是整形,可以被提升为int型,但是int型不能自动转换为枚举类型。在此color=2
color=Color(3); //如果int型有效,则可以通过强制类型转换,转换成枚举类型
enum{zero,one,two,three,four};//如果仅需要定义符号常量而不需要定义枚举量,可以省略枚举名
enum{one=1,four=4,eight=8}; //可以显示地指定枚举值,也可以让枚举量的值相同
enum bits{one=1,two=2,four=4,seven=9};
bits myflag;
myflag=bits(6); //可以通过强制类型转换,6不是枚举值,但是在枚举范围之类,也是合理的。枚举范围是大于最大枚举值的2的幂减去1.例如bits的最大值为15,范围为0~15.
2.枚举(c++/CLI)
enum class Suit{clubs,diamonds,hearts,spades}; //定义枚举的关键字为enum class
Suit suit=Suit::clubs;
int value=safe_cast<int>(suit); //枚举变量强制转换为int型变量
enum class Face : char{Ace,Two,Three,four,five,six,seven,nine,ten}; //允许显示地指定枚举值的类型
Face card=Face::ten;
card++; //可以自增运算
card=card-Face::Two; //可以相减,但要求均为枚举常量