2.2 标识符、常量和变量
2.2.1 标识符
在C语言中,有许多符号的命名,如变量名、函数名、数组名等,都必须遵守一定的规则,按此规则命名的符号称为标识符。合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。在C语言程序中,凡是要求标识符的地方都必须按此规则命名。以下都是合法的标识符:
area、PI、_ini、a_array、a1234、P101p
以下都是非法的标识符:
456P、cade-y、w.w、a&b
在C语言的标识符中,大写字母和小写字母被认为是两个不同的字符,例如page和Page是两个不同的标识符。 对于标识符的长度(即一个标识符允许的字符个数),C语言编译系统是有规定的,即标识符的前若干个字符有效,超过的字符将不被识别。不同的C语言编译系统所规定的标识符有效长度可能会不同。有些系统允许取较长的名字,读者在取名时应当了解所用系统的具体规定。
C语言的标识符可以分为以下三类。
一、关键字
C语言已经预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用,这些标识符称为关键字。例如,用来说明变量类型的标识符int,double以及if语句中的斌else等都已有专门的用途,它们不能再用作变量名或函数名。
二、预定义标识符
所谓预定义标识符是指在C语言中预先定又并具有特定含义的标识符,如C语言提供的库函数的名字(如printf)和预编译处理命令(如define)等。C语言允许把这类标识符重新定义另作他用,但这将使这些标识符失去预先定义的原意。鉴于目前各种计算机系统的C语言都一致把这类标识符作为固定的库函数名或预编译处理中的专门命令使用,因此为了避免误解,建议用户不要把这些预定义标识符另作他用。
三、用户标识符
由用户根据需要定义的标识将称为用户标识符,又称自定义标识符。用户标识符一般用来给变量、函数、数组等命名。程序中使用的用户标识符除要遵守标识符命名规则外,还应注意做到“见名知义”。即选择具有一定含义的英文单词或汉语拼音作为标识符,如numberl、red、yellow、green、work等,以增加程序的可读性。
如果用户标识符与关键字相同,则在对程序进行编译时系统将给出出错信息;如果用户标识符与预定义标识符相同,系统并不报错,只是该预定义标识符将失去原定含义,代之以用户确认的含义,这样有可能会引发一些运行时错误。
2.2.2 常量
所谓常量是指在程序运行过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量还可以进一步分为短整型常量、长整型常量等。
整型常量和实型常量又称数值型常量,它们有正值和负值的区分。基本整型常量只用数字表示,不带小数点,例如12、-1、0等。实型常量必须用带小数点的数表示,例如3.14159、-2.71828、0.0等。'A’和'd’则是字符型常量,而"NCRE"和"Beijing"是字符串常量。由此可见,常量的类型从字面形式上是可区分的,C编译程序就是以此来确定常量类型的。
来源:-计算机二级考试
2.2.3 符号常量
在C语言程序中,可以用一个符号名来代表一个常量,称为符号常量。这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。
例2.2 计算圆面积。
#include"stdio.h"
#define PI 3.14159 /*定义符号名PI为3.14159/
main()
{ double r,s;
r=5.0;
s=P1*r*r;
printf("s="%f\n",s);
}
执行以上程序后的输出结果如下:
s=78.539750
程序中用#define命令行(注意:不是语句)定义PI代表一串字符3.14159,在对程序进行编译时,凡本程序中出现PI的地方,编译程序均用3.14159来替换。为了使之比较醒目,这种符号名通常采用大写字母表示。用define进行定义时,必须用“#”作为一行的开头,在#define命令行的最后不得加分号。有关#define命令行的作用,将在后续篇章中介绍。
2.2.4 变量
所谓变量是指在程序运行过程中其值可以改变的量。程序中用到的所有变量都必须有一个名字作为标识,变量的名字由用户定义,它必须符合标识符的命名规则,如例2.1中的a、b和area就是由用户定义的变量名。
一个变量实质上是代表了内存中的某个存储单元。在程序中。变量a就是指用a命名的某个存储单元,用户对变量a进行的操作就是对该存储单元进行的操作;给变量a赋值,实质上就是把数据存入该变量所代表的存储单元中。
C语言规定,程序中所有变量都必须先定义后使用。对变量的定义通常放在函数体内的前部,但也可以放在函数的外部或复合语句的开头。
像常量一样,变世也有整型变盘、实型变量、字符型变量等不同类型。在定义变量的同时要说明其类型,系统在编译时就能根据其类型为其分配相应的存储单元。