2.1 常量
C++程序中的数据可分为常量与变量两大类。常量是在程序运行过程中不变的量;变量是在程序运行过程中可发生变化的值。在编程时,常量和变量必须遵循“先声明,后使用”的原则,即所有常量和变量必须在使用前用说明语句进行说明,否则在编译时将会产生错误。本节主要针对常量进行介绍,下一节将着重介绍变量的相关内容。
2.1.1 声明常量
一般来说,根据书写形式区分,常量可分为符号常量和直接常量。直接常量就是通常说的常数,如:123、3.14、“a”、“&”等。符号常量如:
上述声明就声明了常量pi为一个符号常量,在程序中用pi代替3.1415926,提高了程序的可读性和可维护性。但是在更多情况下,根据常量的定义方法区分,常量可分为以下两种:
●const常量。
●宏常量。
其中,用const定义的常量,称为正规常量,其说明语句的一般形式为:
通常,用const定义常量需要遵循一些注意事项,具体如下:
●必须以const开头。
●类型名为基本类型及其派生类型,可以省略。
●常量名为标识符。
●表达式应与常量类型一致。
而宏常量是用#define定义的常量,其说明语句的一般形式为:
宏常量的具体定义规则如下:
●宏名可以是简单的字符名,也可以是带有参数的函数名。
●常量可以是数值、字符串和函数等。
例如,下列程序代码定义了常量pi的值为3.1415926,分别采用const关键字和#define关键字定义,其定义语法稍有不同。
上述程序代码定义符号常量pi,然后在程序中使用pi,跟使用常数3.1415926的效果是一样的。编译器在编译时,把符号pi替换成3.1415926,当需要修改pi的值时,只需要修改上面的语句即可。
注意
预定义符号即定义宏常量与符号常量不同,在编译时使用常数替代了所有的预定义符号,这样在代码中相应位置实际都是常数。程序中过多的常数会导致程序代码量变大,而且在多个源文件中定义了同样的符号,会产生符号重定义的问题。使用常量优于#define宏,其优点在于可指定类型信息。
在程序设计中,尽量使用符号常量来代替常数,这是一种好的编程习惯,这样可以增加程序的可读性、可维护性。例如,在数值计算中,会经常遇到一些常量,比如圆周率。如果把它定义成符号常量,当需要更改常量值的时候,只需要更改符号常量的定义语句即可。
2.1.2 常量的应用
在进行程序设计时,常量的应用很普遍。例如,设置圆周率π=3.1416。在需要常量的地方,直接使用常量的数值的方法非常不好。例如,需要计算圆的面积,采用下列表达式:
然而,如果此处需要提高计算精度,将π的值改为3.1415927进行计算,用户就不得不将程序中所有的π值从3.1416改为3.1415927,这不仅烦琐,更重要的是很容易出错。
【范例2-1】常量应用示例。该范例在一个C++程序中定义了常量,并在主函数中使用该常量,读者可观察其使用方法和作用,其操作步骤如下:
①创建C++源程序。打开Visual C++ 6.0的集成开发环境,单击菜单【File】/【New】,弹出【New】对话框。单击其【File】选项卡,选择其中的【C++ Source File】项,并在右侧填写文件名及路径。在该示例中,文件名为“2-1”,并选择该文件的保存路径,如图2-1所示。确定输入及选择的保存路径无误后,单击【OK】按钮,完成建立。
图2-1 创建C++源程序
在上述步骤中,单击【OK】按钮后,Visual C++将进入C++源程序的编辑界面,如图2-2所示,用户可在该界面中输入源程序代码。
图2-2 源程序编辑界面
②在上述Visual C++源程序的代码编辑区中输入源程序代码,如代码清单2-1所示。
代码清单2-1
注意
#include <iostream.h>为添加输入/输出库函数,这样在源程序中就可以使用诸如cout和cin等输入/输出函数,否则系统将报错。
③编译连接源程序。完成源程序的录入编辑后,需要查看该程序的运行效果,必须先对源程序进行编译和连接。在使用菜单【Build】/【Compile】命令或快捷键【Ctrl+F7】进行编译时,由于没有建立工作区,Visual C++将给出如图2-3所示的提示信息,询问用户是否建立一个默认的工作区。
图2-3 提示信息
此处单击【是】按钮即可,系统将在C++源程序所在的目录下生成工程文件。如编译没有错误,那么使用【Build】/【Build】菜单命令或快捷键【F7】进行连接,建立应用程序,最终的编译连接结果应在输出窗口中显示,如图2-4所示。
图2-4 连接输出信息
【运行结果】经过上述步骤后,就可以运行该源程序,用以查看运行结果。该实例中定义的常量pi值为3.141592635898,半径radius值为8.5,其圆的面积为pi*radius*radius,因此,其运行结果如图2-5所示。
图2-5 运行结果
【范例解析】读者可以看出,范例2-1的功能为打印给定半径的圆的面积。在上述代码中,定义了两个符号常量,分别为pi和radius。因在定义中就给定了这两个常量的值,所以在最后的输出语句中给出求圆面积的公式即可。
提示
上述代码中定义的常量均为double型常量,表示双精度类型,这在下面的数据类型中将详细讲解。
至此,关于常量在具体程序中的应用就完成了。读者可以看到,在具体应用程序中,使用常量可以方便程序,但也造成一些问题,如在上述示例中,半径的值只能在程序中指定,而不能根据用户的需求指定,这就限制了程序的使用范围,解决该问题需要使用到下面要介绍的变量。