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

2.3.1 常量

在程序中可以直接使用的数据称为常量,其值在程序运行过程中不可以改变,包括整型常量、实型常量、字符型常量、字符串常量及符号常量等。

1.整型常量

允许使用的整型常量如下。

① 十进制数:以非零数字开始的整数,如-434、0、2345。

② 八进制数:以数字0开始的整数,如0127、030、-0123。

③ 十六进制数:以0x开始的整数,如0x1A、0x4A2、-0xB7。

整型常量可以用下列方法来显式地指明其类型:

① 当任一整型常量后跟一个字母l(或L)时,表示是长整型数。例如,3456L、0x2300L、-0146L分别为十进制、十六进制、八进制长整数。

② 当任一整型常量后跟一个字母u(或U)时,表示是无符号整型数。例如,34u。

通常,整型常量是以补码的形式存储在内存中的,最高位(即符号位)为0表示正数,为1表示负数。但是,也允许使用无符号整数,即将最高位不看做符号位,而用来表示数值。微型计算机中,短整型数在内存中一般用2个字节(16bit)存储,整型数和长整型数用4个字节(32bit)存储。无符号短整型、整型、长整型比相应的有符号短整型、整型、长整型表示的数的范围在正数的方向上扩大了1倍,但不能表示负数。

2.实型常量

实型常量即实数,又称浮点数,由整数部分和小数部分组成,只有十进制数的形式。实数有两种表示方法:小数形式和指数形式。

小数形式:由符号、数字和小数点组成,如0.5、15.02、-534.、.789、0.0、.0、0.等。注意,小数点必须有,不可省略。

指数形式:即采用可科学计数法表示形式,由尾数、字母e或E和指数部分组成,例如,1.23E-2、-32e4分别表示1.23×10-2、-32×104。注意,字母e或E之前必须有数字,之后的指数部分必须为整数。

实数一般分为单精度和双精度两种。单精度实数用4个字节(32bit)存储,有效数字位数为6~7位;双精度实数用8个字节(64bit)存储,有效数字位数为15~16位。

3.字符型常量

用一对单引号括起来的单个字符称为字符型常量,如'A'、'b'、'*'等。需要注意的是,单引号只作为定界符,不是字符型常量的内容。字符型常量可以是ASCII字符集中任意的可打印字符,包括空格字符。字符型常量具有数值,其值就是该字符的ASCII码值(如'A'的值是65,'a'的值是97),可以作为整数参与运算。例如,'a'+3表示将'a'字符的ASCII码值97与整数3相加,结果为100。

另外,还有一种称为转义字符的特殊形式的字符型常量,用于表示ASCII字符集中的控制代码或某些其他功能代码,如表2.2所示。转义字符也是由一对单引号括起来的一个字符,以“\”开始后跟一个字符,或一个“\”后跟一个八进制数或十六进制数组成。例如,'\"'表示双引号,'\r'表示回车,'\0'代表空字符,'\x20'和'\40'都代表空格。

表2.2 转义字符序列

通常,以一个字节来存放一个字符。在内存中,字符型数据是以其ASCII码值的形式存储的,其存储形式与整数的存储形式类似。如果系统将字符型数据处理成有符号的整数,则有符号字符型数据和整型数据在0~127 的范围内是可以通用的。如果系统将字符型数据处理成无符号的整数,则无符号字符型数据和整型数据在0~255 的范围内是可以通用的。不同系统的处理方式是不同的,因此,具体使用时要查看系统的有关资料,或者上机试一下。

4.字符串常量

字符串常量是用一对双引号括起来的若干个字符,例如,"I am a student"、"How are you?"、"b"、"abc567"、""(即空串)。

字符串常量中可以包含空格、转义字符等任意字符,也可以是中文。注意:双引号作为字符串的定界符,不是字符串常量的内容,当计算字符串常量的长度时,双引号不计算在内。

在C语言中,字符串常量的长度不受限制,编译程序在处理字符串常量时自动在其最后加一个'\0'(null)作为“字符串结束标志”。因此,字符串的最小存储长度总比字符串中的实际字符个数多1。例如,"I am a student"的存储长度至少是15,而不是14。对于'a'和"a",前者是字符常量,占1个字节,后者是字符串常量,最小存储长度为2,因为它实际上包含两个字符'a'和'\0'。

5.符号常量

可以将在程序中多次出现的某常量定义成一个标识符,这个标识符称为符号常量。符号常量一般(不是必须)用大写英文字母表示,必须“先定义后使用”,其定义形式如下:

            #define符号常量名 所代表的值

例如:

            #define  PI  3.14

这样的符号常量在程序中一旦定义之后,在其后面的程序中只要碰到PI标识符,系统就认为它的值为3.14。

注意:在程序中绝对不可以给符号常量赋值。例如,PI定义为符号常量之后,程序中如果出现如下的类似语句:

            PI=3.1415926;

则是错误的。也就是说,符号常量一旦定义,就只能使用,而不能改变其值。

使用符号常量可以提高程序的可读性以及常量修改的一致性。例如,将上面的3.14 改为3.1415926,则随后的程序中所有的PI值都变成了3.1415926。