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是错误的。