枚举类型
枚举声明: enum 标志符 枚举体 enum 枚举体 enum 标志符 : 枚举基本类型 枚举体 enum 枚举基本类型 : 枚举体 枚举基本类型: 类型 枚举体: ; { 多个枚举成员 } 多个枚举成员: 枚举成员 枚举成员 , 枚举成员 , 多个枚举成员 枚举成员: 标志符 标志符 = 表达式
EnumDeclaration: enum Identifier EnumBody enum EnumBody enum identifier : EnumBaseType EnumBody enum EnumBaseType : EnumBody EnumBaseType: Type EnumBody: ; { EnumMembers } EnumMembers: EnumMember EnumMember , EnumMember , EnumMembers EnumMember: Identifier Identifier = Expression枚举用来定义一组相关的整数常量。
如果指定了 enum 标志符 ,多个枚举成员 就在 enum 标志符 的作用域内被声明。enum 标志符 声明了一个新类型。
如果不指定 enum 标志符 ,则枚举称为 匿名枚举,多个枚举成员 在 枚举声明 出现的作用域内被声明。没有新类型被创建;多个枚举成员 的类型是 枚举基本类型 。
枚举基本类型 是枚举的基本类型。它必须是整数类型。如果忽略,默认为 int。
enum { A, B, C } // 匿名枚举定义常量 A=0、B=1、C=2 :
const int A = 0; const int B = 1; const int C = 2;等价于:
enum X { A, B, C } // 命名枚举这定义了新的类型 X ,拥有值 X.A=0、X.B=1、X.C=2 。
命名枚举成员可以被隐式转换为整数类型,但是整数类型不能被隐式转换为枚举类型。
枚举必须至少拥有一个成员。
如果枚举成员被赋予一个 表达式 ,则镇各成员的值就是 表达式 的结果。表达式 必须在编译时可以被决定。后续的没有 表达式 的枚举成员的值是前一个成员加一。
enum { A, B = 5+7, C, D = 8, E }这令 A=0、B=12、C=13、D=8、E=9。
枚举的属性
.min 枚举的最小值 .max 枚举的最大值 .sizeof 存储枚举值所需要的存储器大小 例如: X.min 是 X.A X.max 是 X.C X.sizeof 等价于 int.sizeof
枚举的初始化
如果没有显式初始化,枚举变量的值被初始化为第一个枚举成员的值。enum X { A=3, B, C } X x; // x 被初始化为 3