枚举类型

枚举类型

  • 存在的语义: 定义了一个整型常量集合,而且代表这些整型常量之间具备关联.spa

  • 语法: enum 枚举类型 { 枚举成员列表 };code

枚举类型

  • 枚举类型,是可选的,若'枚举类型'不为空,则能够用该类型来声明变量.作用域

  • 此时枚举类型的变量只能由枚举成员赋值/初始化,或者由同属于同一枚举类型的变量来进行赋值/初始化.如:编译

enum    Eof{ EndOfStream,NotEndOfStream };
enum    HANG{ Hang,NoHang };
HANG    var0=Hang;
Eof     var1=EndOfStream;   /* 正确: 由枚举成员进行赋值 */
Eof     var2=var1;          /* 正确: 由属于同一枚举类型的变量进行赋值 */
Eof     var5=(Eof)1;        /* 正确: 强制类型转换 */
Eof     var3=1;             /* 错误: 1 是 int 类型. */
Eof     var4=var0;          /* 错误: 不属于同一枚举类型 */

枚举成员列表

  • 枚举成员列表,由若干个枚举成员组成,使用','隔开.class

  • 枚举成员,自己就是一个整型常量,因此能够出如今任何常量能够出现的地方.变量

  • 枚举成员的值:命名空间

    • 对于枚举成员列表中第一个出现的枚举成员,若其值未被指定,则其值为0.不然就是指定值语法

    • 对于其余枚举成员,其值若未被指定,则为前一个枚举成员的值+1;不然为指定值.im

  • 必须使用编译期常量表达式来指定枚举成员的值.命名

  • 同一个枚举列表中,枚举成员的值能够相同.

  • 枚举成员的值的范围,也即 long 类型变量的取值范围:[-264,263-1].

  • 枚举成员的名字,出如今定义枚举的做用域/命名空间中.如:

class   X{
public:
enum    Eof{ EndOfStream,NotEndOfStream };
};

enum    Use{ UseGmtTime,UseLocalTime,UseS=1UL<<60 };
Println("%d",::UseGmtTime);     /* 正确 */
Println("%d",X::EndOfStream);   /* 正确 */
Println("%d",Use::UseGmtTime);      /* 错误 */
Println("%d",X::Eof::EndOfStream);  /* 错误 */
相关文章
相关标签/搜索