C++入门很轻松(微课超值版)
上QQ阅读APP看书,第一时间看更新

3.2 自定义常量

微视频

在C++中,有两种简单定义常量的方式,分别是使用#define预处理器和使用const关键字来定义。

3.2.1 使用#define预处理器

#define是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。使用#define预处理器定义常量的格式如下:

    #define identifier(标识符) value(常量值)

一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。例如#define PI 3.14159,表示用符号PI代替3.14159。在编译前,系统会自动把所有的PI替换成3.14159,也就是说编译运行时系统中只有3.14159,而没有符号。

【实例3.6】编写程序,使用#define预处理器定义常量来计算圆的面积(源代码\ch03\ 3.6.txt)。

    #include <iostream>
    using namespace std;
    #define PI 3.14159
    int main()
    {
         double square = 0, radius=0;
         cout<<"请输入圆的半径"<<endl;
         cin>>radius;
         square = PI*radius*radius;
         cout<<"半径为"<<radius<<"的圆面积是:"<<square<<endl;
    }

程序运行结果如图3-6所示。在本实例中,首先使用#define预处理器定义了一个PI常量,初始化为3.14159,接着在主函数中使用cin输入圆的半径,然后根据输入的半径计算出圆的面积。从输出结果来看,使用#define实现了PI的宏定义,在程序编译时只要有PI的地方全部替换成3.14159。

图3-6 例3.6的程序运行结果

【实例3.7】编写程序,使用#define预处理器定义常量来计算长方形的周长和面积(源代码\ ch03\3.7.txt)。

    #include <iostream>
    using namespace std;
    #define LENGTH 5
    #define WIDTH 8
    int main()
    {
         int area;                           /*定义长方形的面积*/
         int cir;                            /*定义长方形的周长*/
         area = LENGTH*WIDTH;                /*计算长方形的面积*/
         cir = 2*(LENGTH+WIDTH);             /*计算长方形的周长*/
         cout<<"长方形的面积:"<<area<<endl;
         cout<<"长方形的周长:"<<cir <<endl;
    }

程序运行结果如图3-7所示。从输出结果可以看出,本实例中使用#define预处理器定义了常量。使用#define预处理器定义常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。

图3-7 例3.7的程序运行结果

☆大牛提醒☆

使用#define预处理器定义常量的好处是,含义清楚且在程序中修改一处即可实现“一改全改”。习惯上,使用#define预处理器定义常量的标识符用大写字母,变量标识符用小写字母,以示区别。

3.2.2 使用const关键字

除了使用#define定义符号常量外,用户还可以使用const前缀声明指定类型的常量。其定义格式如下:

    const type variable = value;

相比变量定义的格式,常量定义必须以const开始。另外,常量必须在定义的同时完成赋值,而不能先定义后赋值。

    const float PI = 3.14159;

【实例3.8】编写程序,使用const关键字定义常量来计算圆的面积(源代码\ch03\3.8.txt)。

    #include <iostream>
    using namespace std;
    const double PI = 3.14159;
    int main()
    {
         double square = 0, radius=0;
         cout<<"请输入半径长度"<<endl;
         cin>>radius;
         square = PI*radius*radius;
         cout<<"半径长度为"<<radius<<"的圆面积是:"<<square<<endl;
    }

程序运行结果如图3-8所示。在本实例中,首先使用宏定义了一个PI常量,初始化为3.14159。在主程序中,使用cin输入圆的半径,然后根据输入的半径计算出圆的面积。从结果来看,首先使用const关键字定义了一个PI常量。与使用#define预处理器定义常量不同,使用const定义常量不是在编译时就起作用,而是在运行时才发生作用。

图3-8 例3.8的程序运行结果

【实例3.9】编写程序,使用const关键字定义常量来计算长方形的周长和面积(源代码\ ch03\3.9.txt)。

    #include <iostream>
    using namespace std;
    int main()
    {
         const int  LENGTH = 5;
         const int  WIDTH = 8;
         int area;                           /*定义长方形的面积*/
         int cir;                            /*定义长方形的周长*/
         area = LENGTH*WIDTH;                /*计算长方形的面积*/
         cir = 2*(LENGTH+WIDTH);             /*计算长方形的周长*/
         cout<<"长方形的面积:"<<area<<endl;  /*输出长方形的面积*/
         cout<<"长方形的周长:"<<cir <<endl;  /*输出长方形的周长*/
    }

程序运行结果如图3-9所示。从输出结果可以看出,使用const关键字定义常量与使用#define预处理器定义常量,其计算结果是一样的。

图3-9 例3.9的程序运行结果