2.1 常量
C++程序中的数据可分为常量与变量两大类。常量是在程序运行过程中不变的量,变量是在程序运行过程中可发生变化的值。在编程时,常量和变量必须遵循“先声明,后使用”的原则,即所有常量和变量必须在使用前用说明语句进行说明,否则编译时将会产生错误。本节主要针对常量进行介绍,下一节将着重介绍变量的相关内容。
2.1.1 声明常量
一般来说,根据书写形式区分,常量可分为符号常量和直接常量。直接常量就是通常说的常数,如:123、3.14、“a”、“&”等。符号常量如:
const float pi=3.1415926;
上述声明就声明了常量pi为一个符号常量,在程序中用pi代替3.1415926,提高了程序的可读性和可维护性。但是,在更多情况下,根据常量的定义方法区分,常量可分为如下两种:
● const常量
● 宏常量
其中,用const定义的常量,称为正规常量,其说明语句的一般形式为
const <类型名> <常量名> = <表达式>;
通常,使用const定义常量需要遵循一些注意事项,具体如下:
● 必须以const开头。
● 类型名为基本类型及其派生类型,可以省略。
● 常量名为标识符。
● 表达式应与常量类型一致。
而宏常量是用#define定义的常量,其说明语句的一般形式为
#define <宏名> <常量>
宏常量的具体定义规则如下:
● 宏名可以是简单的字符名,也可以是带有参数的函数名。
● 常量可以是数值、字符串和函数等。
例如,下列程序代码定义了常量pi的值为3.1415926,分别采用const关键字和#define关键字定义,其定义语法稍有不同。
Const float pi=3.1415926; //定义常量pi的值为3.1415926 #define pi 3.1415926; //定义宏常量pi的值为3.1415926
上述程序代码定义符号常量pi,然后在程序中使用pi,跟使用常数3.1415926的效果是一样的。编译器在编译时,把符号pi替换成3.1415926,当需要修改pi的值时,只需要修改上面的语句即可。
注意:预定义符号即定义宏常量与符号常量不同,在编译时使用常数替代了所有的预定义符号,这样在代码中的相应位置实际都是常数。程序中过多的常数会导致程序代码量变大,而且在多个源文件中定义了同样的符号,会产生符号重定义的问题。使用常量优于#define宏,其优点在于可指定类型信息。
在程序设计中,尽量使用符号常量来代替常数,这是一种好的编程习惯,这样可以增加程序的可读性、可维护性。例如,在数值计算中,会经常遇到一些常量,比如圆周率。如果把它定义成符号常量,当需要更改常量值的时候,只需要更改符号常量的定义语句即可。
2.1.2 常量应用示例
在进行程序设计时,常量的应用很普遍。例如,圆周率π=3.1416。在需要常量的地方,直接使用常量的数值的方法非常不好,例如,需要计算圆的面积,采用下列表达式:
s = 3.1416*r*r;
然而,如果此处需要提高计算精度,将π的值改为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
1 #include <iostream.h> //预处理文件 2 void main() 3 { 4 const double pi=3.141592635898; //定义圆周率常量pi 5 const double radius=8.5; //定义半径常量radius 6 cout<<"area of circle of radius"<<radius<<"is"<<pi*radius*radius<<"\n"; 7 //输出结果 8 }
警告:#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型常量,表示双精度类型,这在下面的数据类型中将详细讲解。
至此,关于常量在具体程序中的应用就完成了。读者可以看到,在具体应用程序中,使用常量可以方便程序,但也造成一些问题,如上述示例中,半径的值只能在程序中指定,而不能根据用户的需求指定,这就限制了程序的使用范围,该问题的解决需要使用下面要介绍的变量。