购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 常量与变量

C语言中的数据按其取值是否可改变又分为常量和变量两种。

2.2.1 常量

在程序执行过程中,其值不能被改变的量称为常量。常量可分为不同的类型,如12、0、-7为整型常量,3.14、-2.8为实型常量,'a'、'b'、'c'则为字符常量。常量即为常数,一般从其字面形式即可判别。这种常量称为直接常量。

有时为了使程序更加清晰、可读性强、便于修改,会用一个标识符来代表常量,即给某个常量取个有意义的名称,这种常量称为符号常量。

符号常量在使用之前必须先定义,其一般形式如下:

#define  标识符  常量

其中#define是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。

例2.3 符号常量的使用。

程序代码如下:

#define PI 3.14
#include <stdio.h>
int main(){
    float area, r;
    r = 10;
        area = PI* r * r;
    printf("area=%f\n", area);
    return 0;
}

说明:

该程序的功能是计算圆面积。程序中用#define命令行定义了符号常量PI,其值为圆周率3.14,此后凡在文件中出现的PI都代表圆周率3.14,它可以与常量一样进行运算。

注意,符号常量也是常量,它的值在其作用域内不能改变,也不能再被赋值。例如,下面试图给符号常量PI赋值的语句是错误的。

PI = 20;      //错误!

为了区别程序中的符号常量名与变量名,习惯上用大写字母命名符号常量,而用小写字母命名变量。

使用符号常量的好处如下。

(1)含义清楚。如上面的程序中,看程序时从PI就可知道它代表圆周率。因此,定义符号常量名时应考虑“见名知意”。

(2)在需要改变一个常量时能做到“一改全改”。例如,在程序中需多处用到圆周率,若用常数表示,则在圆周率小数位数调整时就需要在程序中做多处修改;若用符号常量PI代表圆周率,只需改动一处即可。例如:

#define PI 3.14159

在程序中所有以PI代表的圆周率就会一律自动改为3.14159。

2.2.2 变量

在程序运行过程中,其值可变的量称为变量,如例2.1中的h、f、chicken、rabbit,例2.2中的i、t、s。一个变量必须有一个名称,以便被引用;在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意变量名和变量值是两个不同的概念。变量名在程序运行的过程中不会改变,而变量值则可以发生变化。变量名实际上是以一个名称对应代表一个地址,在对程序编译、连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据,如图2.1所示。

图2.1 变量名和变量值

变量名是一种标识符,标识符是程序中用来为符号常量、变量、函数、数组、文件等命名的有效字符序列。标识符的命名规则如下。

(1)只能由字母、数字和下画线组成。

(2)第一个字符必须为字母或下画线。

(3)不能使用C语言中的关键字。

(4)区分大小写字母,sum和Sum是不同的标识符。

在程序中,常量是可以不经说明而直接引用的,而变量则必须进行强制定义,即“先定义,后使用”。这样做的目的有以下几点。

(1)凡未被事先定义的,不可作为变量名,这样就能保证程序中的变量名使用得正确。例如,若有以下变量定义:

int count;

而在程序中将变量名count误写成了conut,如:

conut = 5;

则在程序编译时将会检查出conut未经定义,不作为变量名处理,并显示相应的出错提示信息,便于用户发现错误,避免变量名使用时出错。

(2)一个变量被指定为某一确定的数据类型,在编译时就能为其分配相应的存储单元。如定义a和b为单精度变量,则为a和b各分配4字节,并按整型方式存储数据。

(3)一个变量被指定为某一确定的数据类型,便于在编译时据此检查所进行的运算是否合法。如整型变量可以进行求余运算,而实型变量则不能。 F1CTP97dO0DNdT2JxR1pW8xQ3aNVPFy8wKOYI3k+0+ibY65g4G7s42GAVrfno53a

点击中间区域
呼出菜单
上一章
目录
下一章
×