全国计算机等级考试教程:二级C语言程序设计
上QQ阅读APP看书,第一时间看更新

2.1 常量、变量和标识符

常量、变量和标识符,包括后面将要讲到的运算符是 C语言程序中最小的组成单位,用C语言编写的程序无论多么复杂或多么简单,都离不开这些基本要素。

2.1.1 标识符

学习提示

【理解】标识符是否合法的判断

简单地说,标识符就是一个名称,用来表示变量、常量、函数以及文件等名称。例如,我们每个人的姓名,就是每个人所对应的标识符。

合法的标识符由字母(大、小写均可)、数字和下画线组成,并且必须以字母或下画线开头。C语言是一种对大小写敏感的语言,所以 abc、aBc和 Abc是3种不同的标识符。

例如

_sun、Mouse、student23、Footbaii、FOOTBALL都是合法的标识符。

23student、Foot-baii、s.com和b&c都是非法的标识符。

请思考

为什么说以上标识符是非法的标识符?标识符能否用汉字表示?

2.1.2 关键字

学习提示

【熟记】C语言中的常用关键字

所谓关键字是指被C语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义。例如,用来说明变量类型的标识符int、fioat以及条件语句中的if、eise等都已经有专门的用途,它们不能再用作变量或函数名。

2.1.3 常量

什么是常量呢?简单地说,在程序运行过程中,其值不能被改变的量称为常量。常量可以分为3类,即整型常量、实型常量和字符型常量,其中整型常量和实型常量又称为数值型常量。

●整型常量:用不带小数点的数字表示。

●实型常量:用带小数点的数字表示。

●字符型常量:用带有单引号的字符表示。

一般情况下,常量的类型可以通过书写形式来判断。

例如

1、2、12是整型常量,2.1、12.5、3.14是实型常量,´a´、 ´b´、´c´是字符型常量。

2.1.4 符号常量

学习提示

【掌握】符号常量的定义和使用

在C语言中,可以用一个标识符表示一个常量,称之为符号常量。符号常量是一种特殊的常量,其值和类型是通过符号常量的定义命令决定的。由于其较难理解,且是C语言中的重点,故单独讲解它的相关知识。符号常量在使用之前必须先定义,其一般形式为:

#define标识符 常量

说明

●#define是一条预处理命令,又被称为宏定义命令,其功能是把命令格式中的标识符定义为其后的常量值。

●一经定义,以后在程序中所有出现该标识符的地方均以该常量值代之。

●习惯上符号常量的标识符用大写字母表示,变量标识符用小写字母表示,以示区别。

●用define进行定义时,必须用“#”号作为一行的开头,在#define命令行的最后不得加分号结束。

有关#define命令的作用,将在第10章中进行更深入的讲解,读者可以先按上述说明简单使用。

【例2-1】求边长为20的正方形的面积。

程序代码

#define LENGTH 20

#include<stdio.h>

void main( )

{ float s;

 s=LENGTH*LENGTH;

 printf("s=%f\n",s);

在主函数中,s被定义为 float型,即实型;在主函数之前由宏定义命令定义LENGTH为 20,程序执行过程中即以LENGTH代替20,即

s=LENGTH*LENGTH等效于s=20*20。

在程序中,不能再用赋值语句对符号常量重新赋值,也就是说,在本例中不能再对LENGTH赋值。

请注意

① 在使用符号常量时,一般要做到“见名知意”,如上面的程序中LENGTH就是正方形的边长。

② 使用符号常量的一个最大的好处就是能够做到“一改全改”,例如,想知道另一个边长为10的正方形的面积,那么就可以只做如下改变:

#define LENGTH 10

这样就能够轻松达到目的。读者可以掌握这种程序设计的技巧,这种“一改全改”的属性对编写比较大的程序是非常有利的。

2.1.5 变量

学习提示

【熟记】变量的定义与初始化

什么是变量呢?简单地说,在程序执行过程中,其值可以被改变的量称为变量。例如,二元一次方程y=12x+16中,x称为自变量,y称为因变量,也就是说y会随着x的变化而变化,所以,方程中的x和y都是变量。

一个变量具有两个要素:变量名和变量值。每个变量都必须有一个名称,即变量名,变量的命名遵循标识符的命名规则。一个变量名实质上是代表了内存中的一个存储单元,该单元中存储的内容就是变量值。在程序执行的过程中,通过变量名来引用变量的值。

当使用C语言的各种变量时,都必须遵循一个原则,即“先说明,后使用”。这里的“说明”是指在使用变量前要明确变量的数据类型、存储类型和作用域,即变量的定义。存储类型和作用域属于较难的知识点,将在第8章介绍。

1 变量的定义

一条变量定义语句由数据类型和其后的一个或多个变量名组成,其定义形式如下:

数据类型 变量名1[,变量名2,…] ;

说明

我们把“变量名1,变量名2,…”称之为变量名表。变量名表可以是一个或多个标识符,也就是说我们可以同时定义相同数据类型的多个变量。

上述格式中的“[]”表示其中的内容是可选项,即可有可无,如果没有特殊说明,本书中出现的“[]”都表示这个含义。

数据类型与变量名之间至少用一个空格隔开。当定义多个变量时,每两个标识符名之间用“,”隔开。

例如

习惯上,为了增加程序的可读性,变量名和函数名中的英文字母用小写。对应的标识符,还应该做到“见名知意”。例如,name(姓名)、age(年龄)、student(学生)和teacher(老师)等。

请思考

在 C 语言中,变量名 total 与变量名 TOTAL、ToTaL、tOtAl等是同一个变量吗?

2 变量的初始化

在定义变量之后,可以根据需要赋予它一个初始值,即变量的初始化。在定义变量的同时,也可以对变量进行初始化,它的一般形式如下:

数据类型变量名1[=初值][,变量名2 [=初值2]…];

例如

真题演练

【例1】以下选项中不合法的标识符是( )。

A)&a  B)FOR  C)print  D)_00

【解析】C语言中标识符由字母、下画线、数字组成,且开头必须是字母或下画线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以选项B中的“FOR”可以作为标识符来用。选项A中含有非法字符“&”,所以选择选项A。

【答案】A

【例2】下列定义变量的语句中错误的是( )。

A)int_int;     B)double int_;

C)char For;     D)float US $;

【解析】C语言规定,变量命名必须符合标识符的命名规则。选项D中包含了非法字符“$”,所以错误。标识符由字母、数字或下画线组成,且第一个字符必须是大小写英文字母或者下画线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。

【答案】D

【例3】以下叙述中正确的是( )。

A)C语言中的关键字不能作变量名,但可以作为函数名

B)C标识符的长度不能任意长,最多只能包含16个字符

C)标识符总是由字母、数字和下画线组成,且第一个字符不得为数字

D)用户自定义的标识符必须“见名知义”,如果随意定义,则会出现编译错误

【解析】C语言中的关键字既不能做变量名,也不能做用户函数名,所以选项A错误。标识符的命名规则是,由下画线、字母、数字组成,且必须以下画线和字母开始,也不能和关键字一致,所以选项C正确。不同C语言规定标识符的有效长度可能会不同,但没有限制最大长度,所以选项B错误。用户定义的标识符只要满足标识符命名规则就没有特殊要求,不必一定要“见名知义”,所以选项D错误。

【答案】C

【例4】以下选项中能表示合法常量的是( )。

A)1,200      B)1.5E2.0

C)´\´        D)"\007"

【解析】选项A中整型常量应表示为1200,不能包含“,”。选项B中E后面的指数必须为整数。选项C中转义字符以“\”开始,若要表示字符“\”,应写为"\",故答案为选项D。

【答案】D

【例5】以下叙述中错误的是( )。

A)数值型常量有正值和负值的区分

B)常量可以用一个符号名来代表

C)定义符号常量必须用类型名来设定常量的类型

D)常量是在程序运行过程中值不能被改变的量

【解析】数值型常量有整型常量、实型常量,不论是整型常量还是实型常量,都有正值和负值之分,所以选项A正确。在C语言的预编译处理中,可以用符号名代表一个常量,定义时不必指定常量类型,所以选项C错误,选项B正确。常量就是在程序运行过程中值不能被改变的量,所以选项D正确。

【答案】C