2.5.3 为常量命名
计算机程序中的数字存在两个问题。第一是它们不好记。例如,数字10在程序中出现时,不能就其含义传达任何有意义的信息。例如,在一个银行程序中,10既可能是分行的数量,也可能是总行的出纳窗口的数量。要想理解程序,就需要知道每个常量的含义。第二个问题是,程序需要更改部分数字时,更改可能出错。假定数字10在上述银行程序中出现了12次,其中4次代表分行数,另外8次代表总行出纳窗口数。一旦银行开设一个新的分行,并需要更新该程序,有的10可能需要变成11,有的根本不能改动。为了避免这些问题,一个办法是为每个数字命名,在程序中使用名称而不是数字本身。例如,可在银行程序中包含两个常量,分别命名为BRANCH_COUNT(分行数)和WINDOW_COUNT(窗口数)。这两个数字的值可能都为10,但在开始设立新的分行时,为了更新程序,只需更改BRANCH_COUNT的定义就可以了。
如何命名C++(www.cppentry.com)程序中的数字呢?一个办法是将变量初始化为那个数字,示例如下:
- int BRANCH_COUNT = 10;
- int WINDOW_COUNT = 10;
但是,以这种方式命名数字常量也有问题:你可能会不小心更改了上述变量的值。C++(www.cppentry.com)提供了一种方式来标记初始化好的变量,使其不能更改。程序试图更改这种变量,就会出错。要标记一个不能更改的变量,请在变量声明之前添加单词const(constant的缩写)。例如:- const int BRANCH_COUNT = 10;
- const int WINDOW_COUNT = 10;
如果变量为同一类型,可将以上两行合并为一个声明,如下所示: - const int BRANCH_COUNT = 10, WINDOW_COUNT = 10;
- const Type_Name Variable_Name = Constant;
示例- const int MAX_TRIES = 3;
- const double PI = 3.14159;
自测题
35.以下if-else语句能正常编译和运行。但是,它的布局与我们在其他程序中使用的其他if-else语句不一致。请重写它,使它的布局(缩进和换行)与本章采用的风格相匹配:
- if (x < 0) {x = 7; cout << "x is now positive.";}
- else {x = -7; cout << "x is now negative.";}
36.以下两行语句的输出是什么(假定已把它们嵌入一个完整和正确的程序)? - // cout << "Hello from";
- cout << "Self-Test Exercise";
37.写一个完整的C++(www.cppentry.com)程序,要求用户输入加仑数(gallon),再输出等价的公升数(liter)。1加仑等于3.78533公升。请使用一个声明常量。这只是练习题,无需在程序中添加任何注释。