2.2 常量及其类型
常量是指在程序运行过程中,其值保持不变的量。常量也分各种类型。
1. 整数
整数在计算机中是准确表示的,C语言中的整数可以用十进制、八进制和十六进制表示。
(1) 八进制整数是以数字0开头,八进制整数一般不使用负数。
(2) 十六进制整数是以数字0和字母x(大小写均可)打头。例如,0x2f是一个十六进制,相当于十进制的47。十六进制整数也不使用负数。
在整数后面加上后缀u或U表示无符号整数,如70000u,0123u,0x567abU等。
在整数后面加上后缀l或L表示长整数,如-124783648l,1234567890L等。
在整数后面加上后缀ul或UL表示无符号长整数,如3456ul,1234567890ul等。
2. 实数
实数是在计算机中近似表示的。实数只能用十进制表示而不能用其它进制表示,有两种书写格式。
(1)小数格式。由正负号、整数部分、十进制小数点和小数部分表示。为了计算机正确识别实数,书写小数点是必不可少的。如: .543、-25、0. 、.0 、0.0;
(2)指数格式。在小数格式基础上,后面再加上一个e或E后跟一个1~3位整数部分。如: -1.234E8、2.74e-02、2.71828e0、.86e-3、1e-2等。
3. 字符常量
字符常量是指仅含单个ASCII字符的常量。有两种表示方法。
(1)单引号表示法。对可显示字符,直接用单引号将该字符括住。
(2)转义字符表示法。对不可显示字符,主要指那些控制字符如换行符、回车符、制表符等,还有一些在C语言中有特殊含义和用途的字符如单引号、双引号、反斜杠等,只能用转义字符表示。
转义字符既可以由反斜杠开头后跟某个特定字母的形式表示(如 ’\n’ , ’\t’ )也可以用反斜杠开头,后跟1~3位八进制数(此时,八进制前不可以加0)或1~2位十六进制数(此时,十六进制数前面必须冠以小写字母x,x前面也不能带数字0)来表示(如 ‘\012’ , ‘\xa’等),这些八进制或十六进制数表示对应字符的ASCII代码。
当然,可显示字符也可以用转义字符表示。例如,’A’,’\101’,’\x41’都代表字母A。
转义字符 |
含义 |
十进制ASCII代码值 |
说明 |
\0 |
NULL |
0 |
ASCII代码值为0 |
\a |
BELL |
7 |
报警铃响 |
\b |
BS |
8 |
退格符(backspace) |
\f |
FF |
12 |
换页符 |
\n |
NL(LF) |
10 |
换行符 |
\r |
CR |
13 |
回车符 |
\t |
HT |
9 |
水平制表符(Tab) |
\v |
VT |
11 |
垂直制表符 |
\\ |
\ |
92 |
反斜杠 |
\’ |
‘ |
44 |
单引号 |
\” |
“ |
34 |
双引号 |
C语言对字符型和整型是不加区分的,字符常量被忽视为1字节的整数,可以像整数一样参加数值运算,其值就是该字符的ASCII码。
4. 字符串常量
字符串常量是用双引号括起来的0个或多个字符的序列。
(1) 字符串常量的存储方式。按字符串中字符从左到右的顺序依次占用连续的存储单元,每个字符占一个字节,存放其对应的ASCII码。C编译系统会在每个字符串常量的末尾追加一个零字符NULL( ‘\0’ )作为字符串的结束标识符。所以,一个含有n个字符的字符串常量要占用n+1个字节的存储空间。但零字符NULL打印时不显示。
(2) 字符串常量和字符常量的区别。
每个字符常量只占用一个字节的存储空间,而字符串常量则要占用一批连续的存储单元,其所占字节数为字符串长度加1.
字符型常量可以存放在字符串常量中,而字符串常量则必须放在字符串数组中。
字符型常量可以和整数混合运算,而字符串常量不可以。