枚举类型
枚举声明:
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
博客主要介绍了枚举类型相关知识。指定 enum 标志符会声明新类型,不指定则为匿名枚举。枚举基本类型须为整数类型,默认是 int。命名枚举成员可隐式转整数,但反之不行。枚举至少有一个成员,成员值可由表达式决定,无表达式则为前一个成员加一。





