总是忘记一些枚举的使用细节,为了方便自己总结一下
定义格式:enum enumName {符号常量列表};(列表之间逗号隔开)
1.枚举定义时符号常量默认是从0开始自增1来编号的
2.当符号常量中如果有给定初值的常量,则此常量之前依然按默认编号,列表中给定初值的常量之后从初始化值开始自增1来自动编号
例 enum enu1 {a,b=97,c}; 此时a编号为0,c编号为98。初试化的值要求为整型值(char 值将作为其ASCii码,例中 b=97与b='a'等效)
3.枚举变量在程序中是作为整型来处理的,但其值的变化范围不能超出给定的常量范围(范围指列表中给定的所有确定编号值)
4.在不进行强制类型转换情况下,只能将定义时使用的枚举常量赋给相应的枚举变量。
5.当定义的多个枚举中有同名常量时,可使用作用域内枚举(c++11)。声明格式:enum class enuname{...};或者
enum struct enuname{...}; 此时枚举变量赋值时要加上域(枚举名)来限定.
举例:enum class enu1{a,b,c};
enum class enu2{a=1,b,c};
enu1 en1=enu1::a;
enu2 en2=enu2::a;
cout<<(int)en1<<endl<<(int)en2<<endl;
输出结果为:
0
1