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的程序运行结果