C语言编程兵书
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 不可以改变的数据——常量

常量是在计算机内存中开辟空间并附有固定值的数据类型。常量就是不可改变的量。由于数值的类型有多种,有整型、浮点型(实型)、字符型等,那么对应的常量就有整型常量、实型常量、字符型常量,还有字符串常量、转义字符常量等。这些数据类型将在2.3节中详细介绍。本节主要介绍常量的定义和符号常量的使用。

2.1.1 常量的定义

常量是指在程序运算过程中不可更改的量。例如,某个商品成本定价,如果在程序的多处地方都会使用到这个价格的定义,并且这个价格不会更改,就应该使用常量定义;又例如,数学公式里的圆周率π,它的值是固定不变的,所以就应该定义π为一个常量。

常量在程序中经常会出现,例如:

5、3.141592653、'A'、"program"

此时只要求它们符合“相应类型数据”的表示方法即可。相应于C语言中的各种数据类型,有整型常量、浮点型常量、字符型常量及字符串常量。这些类型的常量将在后面详细介绍,这里只需要了解即可。

但是更多的情况下,C语言中常用到的常量是符号常量,因为如果直接在程序中使用数字或者字符串时,会导致程序的可读性差(外人阅读程序时不易搞懂),而且当在程序多处需要使用同一常量的时候,直接使用常量,容易发生书写错误(像π=3.1415926,很容易写错一位)。另外,当修改程序中需要更改的常量值时,要同时修改程序中用到该值的所有地方,很麻烦而且容易出错。因此,下面将详细介绍符号常量。

2.1.2 进化版的常量——符号常量

符号常量是指,用一个标识符(可以描述常量所代表的含义,像用PI来定义π的具体数值)来代表一个常量,通过宏定义预处理指令来实现。格式如下:

#define标识符常量

由用户命名的标识符是符号常量名。作为符号常量名,一般用大写。一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替。使用了符号常量的程序在编译前会以实际常量值替代符号常量。

例2-1 输出圆的面积,通过它来简单说明常量的用法。

代码2-1

01 #include<stdio.h>            //添加头文件
02 #define PI 3.14              //定义符号常量PI
03 #define R 2
04 void main()                   //主函数void表示无返回值,后面介绍
05 {
06     double s;                          //定义变量s
07    s=PI*R*R;                      //求圆面积并将值赋给变量s
08     printf("面积=%6.3f\n",s);          //输出变量s
09 }

运行结果如下:

面积=12.560

引入符号常量有两方面的作用:一方面是便于修改程序,如程序中圆周率的精度要提高,只要修改第01行的常量定义,而不必修改程序中每个出现圆周率的地方;另一方面是增加程序的可读性,通过名字就可以了解到常量的实际意义。

注意:符号常量和常量不同于变量,它们的值再不允许被改变,也不能再被赋值。如在代码2-1中,再让R=10是错误的。