21天学通C++
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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型常量,表示双精度类型,这在下面的数据类型中将详细讲解。

至此,关于常量在具体程序中的应用就完成了。读者可以看到,在具体应用程序中,使用常量可以方便程序,但也造成一些问题,如上述示例中,半径的值只能在程序中指定,而不能根据用户的需求指定,这就限制了程序的使用范围,该问题的解决需要使用下面要介绍的变量。