1.7.3 使用枚举类型
枚举类型是unsigned int型常量的集合,其中的常量称为枚举数。通常情况下,这些枚举数是相关的,并且有特定顺序。这里给出一个枚举类型的例子:
- enum difficulty {NOVICE, EASY, NORMAL, HARD, UNBEATABLE};
这里定义了一个枚举类型difficulty。默认情况下,枚举数的值从0开始,每次加1。所以NOVICE等于0,EASY等于1,NORMAL等于2,HARD等于3,UNBEATABLE等于4。如果要定义自己的枚举类型,只要在关键词enum后面加上标识符,然后加上用花括号括起来的枚举数列表。
下面定义了枚举类型的变量。
- difficulty myDifficulty = EASY;
变量myDifficulty被置为EASY(等于1)。myDifficulty是difficulty类型的变量,因此它能够存储枚举类型中定义的值。也就是说,只能用NOVICE、EASY、NORMAL、HARD、UNBEATABLE、0、1、2、3或4这些值对myDifficulty赋值。
下面定义了另外一种枚举类型。
- enum shipCost {FIGHTER_COST = 25, BOMBER_COST, CRUISER_COST = 50};
本行代码定义了shipCost这一枚举类型,用来表示在策略游戏中建造这些飞船花费的资源点。在代码中,某些枚举数被赋予了特定的整数值。这些值表示每种船只的资源点。如果需要,可以对枚举数赋值。没有赋值的枚举数的取值为前一个枚举数的值加1。由于代码没有对BOMBER_COST赋值,因此它被初始化为26。
下面定义了这种新枚举类型的一个变量。
- shipCost myShipCost = BOMBER_COST;
还可以对枚举数进行算术计算。- (CRUISER_COST - myShipCost)
这一小段代码计算从Bomber升级到Cruiser所需的花费,与50-26相等,结果为24。