1.7.2 使用常量
程序定义了常量ALIEN_POINTS来表示外星人的分值。
const int ALIEN_POINTS = 150;
这里只需要在变量的定义之前加上const修饰符。现在可以像使用任何整数一样使用ALIEN_POINTS。注意,程序使用了大写字母命名常量。这只是惯例,但一般都这么做。全部大写的标识符告诉程序员它代表了一个常量。
下面一行代码使用了常量:
int score = aliensKilled * ALIEN_POINTS;
杀死的外星人数目与每个外星人的分值相乘得到玩家的得分。常量的使用让这行代码的含义显得很清晰。
陷阱
不能对常量赋新值。如果试图这么做,会生成编译错误。
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。