首页 理论教育C语言常量及转义字符使用详解

C语言常量及转义字符使用详解

【摘要】:指数形式:如1.23e5 或12.3E5 都代表1.23×105。表2.3 中列出了C 语言中常用的转义字符及这些字符的含义。表2.3转义字符集下面程序中使用了几种转义字符,分析程序的执行结果。字符常量占有一个字节的存储空间,只能表示一个字符。

常量是指在程序运行过程中其值不能被改变的量。在C 程序中,常量是可以不经说明而直接引用的。常量可分为直接常量和符号常量,其中直接常量包括整型常量、实型常量、字符常量和字符串常量。

C 语言中常量一般有以下几种形式。

1.整型常量

整型常量有3 种表示方法。

(1)十进制整数:如158、569、-2 563。

(2)八进制整数:以0 开头的数表示为八进制数,如026、031。

(3)十六进制整数:以0x 开头的数表示十六进制数,如0x1a、0x28。

整型常量数据后面附一个字母L(或l)作后缀时,表示该数据类型是长整型。有后缀字母U(或u)时,表示数据类型是有符号的。

2.实型常量

在C 语言中,把带有小数的数称为实数或是浮点数。实型常量只能用十进制形式表示,不能用八进制和十六进制数据表示。实型常量有两种表示方法。

(1)小数形式:由数字和小数点组成,如3.141 592 6、-0.12、.3、5.等都是实数。

(2)指数形式:如1.23e5 或12.3E5 都代表1.23×105。注意,字母e(或E)之前必须有数字,且字母后面的指数必须为整数。如e3、2.1e1.2、e 都是不合法的指数形式。

3.字符常量

字符常量由一对单引号括起来的单个字符组成。在C 语言中,字符常量有以下特点:

(1)字符常量只能用单引号括起来,不能用双引号或其他符号。

(2)字符常量只能是单个字符,不能是多个字符,多个字符叫字符串。

(3)字符可以是字符集中的任意字符。一个字符常量的值是该字符对应的ASCII 码值。

C 语言中除了可见字符外,还有一些特殊的控制字符无法这样直接给出,如换行字符等。C 语言为它们规定了特殊写法:以反斜杠开头(\)的一个字符或一个数字序列,这类字符被称为转义字符。转义字符的作用就是表明反斜杠后面的字符不取原来的意义。转义字符在C语言程序中起着特殊作用,如换行字符‘\n’,退格字符‘\b’等。

表2.3 中列出了C 语言中常用的转义字符及这些字符的含义。

表2.3 转义字符集(www.chuimin.cn)

【例2.1】下面程序中使用了几种转义字符,分析程序的执行结果。

程序如下:

分析:程序中“”表示空格。该程序是用printf( )函数直接输出双引号内的各个字符。应注意其中的转义字符“\”。第一个printf( )函数在第一行左端开始输出“abx”,然后遇到“\b”,它的作用是“退格”,即退到前一个位置“x”处,接着输出“cd”。然后遇到“\t”,跳格到下一个制表区,在Visual C++系统中一个“制表区”占8 列,即“下一制表位置”从第9 列开始,所以在第9 至12 列上输出“efgh”。接下来又遇“\t”,再跳到下一个制表区,即从第17 位开始,输出“ijkl”。最后遇“\n”,表示“换行”,作用是将当前位置移到下一行的开头。第二个printf( )函数先是从第二行第一列输出字符“xxxxxxxx”,然后遇转义字符“\r”,表示回车不换行,即退回到本行第一列输出字符“mnop”,再遇“\t”,使当前位置跳到第9 列,输出“qrst”,再输出4 个空格符,紧跟着输出字符“uvwx”,最后换行,输出结束。

程序的运行结果为:

4.字符串常量

C 语言中没有专门的字符串类型的变量,但可以使用字符串常量。字符串常量是由一对双引号括起来的字符序列组成的,如"abc"、"a"等都是字符串常量。双引号仅起定界符的作用,并不是字符串中的字符。字符串常量中不能直接包括单引号、双引号和反斜杠,若要使用,需要使用转义字符。

字符串常量与字符常量的区别如下:

(1)字符常量由单引号括起来,字符串常量由双引号括起来。

(2)字符常量占有一个字节的存储空间,只能表示一个字符。字符串常量在内存中的存储空间由字符串的长度决定。字符串常量占的内存字节数等于字符串中字符个数加1,加的这个字节是存储字符串的结束标记'\0'的。

5.符号常量

符号常量就是使用符号代表常量。C 语言中允许用标识符定义一个常量,这种常量定义在C 语言中被称为“宏定义”,其一般形式为:

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

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