2.2.3 字符型
1.字符型常量
字符常量是用单引号括起来的一个字符。如'a','b','=','5',' '都是合法字符常量。
注意:在C语言中,'a'和'A'是不同的字符常量,'5'是一个字符常量而5是一个十进制的整数。
2.转义字符
转义字符是一种特殊的字符常量。转义字符以反斜扛"\"开头,后跟一个或几个字符。转义字符具有特别的含义,不同于字符原有的意义,故称"转义"字符。例如,在前面程序中printf函数中用到的"\n"就是一个转义字符,其意义是"回车换行"。转义字符主要用来表示那些用一般字符不便于表示的控制代码,表2-1为常用转义字符。
表2-1 常用转义字符表
|
字符形式< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
含 义 |
|
\n |
换行,将当前位置移到下一行开头,相当于按Enter键 |
|
\t |
跳到下一个tab位置,相当于按Tab键 |
|
\b |
退格,将当前位置移到前一列,相当于按BackSpace键 |
|
\\ |
反斜扛字符\ |
|
\’ |
单引号字符’ |
|
\” |
双引号字符” |
|
\0 |
空字符,它将用在字符串中 |
|
\ddd |
1到3位的八进制数所代表的字符,如\101代表字符A |
|
\xhh |
1到2位的十六进制数所代表的字符,如\x41代表字符A |
3.字符变量
字符型变量由关键字char来定义,如下所示:
定义了两个字符型变量c1、c2,并为c2赋予了初值,即字符'A'。
一个字符型变量在内存中占一个字节(8位),只能存放一个字符,如'a','=','\n','\n'是一个转义字符。字符是以ASCII码的形式存放在内存单元中的,每个字符对应一个ASCII码,如字符A对应的ASCII码为65,字符a对应97,字符b对应98。因此,字符型变量的值实质上是一个8位的数值,其值范围为 27~27 1即 128~127。字符型变量char也可以加上修饰符unsigned变为unsigned char,它表示一个8位的无符号整数,其值取值范围为0~28 1即0~255。
由于字符在内存中以ASCII码的形式存放,而ASCII码实际上就是一个整数,因此字符型变量可以与整型变量进行运算。例2-4将实现它们之间的转换。
例2-4
#include int main( ) { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-32; printf("c1 is %d and c2 is %d\n",c1,c2); printf("c3 is %d and %c\n",c3,c3); } |
程序说明。
(1)程序首先定义两个整型变量c1、c2,然后再定义一个字符变量c3。
(2)将字符a与A的ASCII码相减,并把结果赋给c2。字符a与A的ASCII码分别是97和65,因此c1的值为32。之后把字符b与B的ASCII码相减,并把结果赋给c2。字符b与B的ASCII码分别为98和66,因此c2的值也为32。事实上,对于26个英文字母,其大小写的ASCII码之差都是32,因此大小写之间的转换是很容易的。
(3)将字符c减去32,把值赋给c3。c3的值是字符C的ASCII码,即67。
(4)程序第一行打印出c1和c2的值。第二行以整型和字符型两种方式打印出c3的值。"%c"表示该位置输出的是一个字符型变量的值。
运行结果如下:
c1 is 32 and c2 is 32 c3 is 67 and C
|
4.字符串常量
字符串常量是由一对双引号括起的字符序列,例如:
"China","Welcome to Linux\n","How are you "。
|
字符串常量在内存中存储时,每个字符占用一个字节的内存空间,系统自动在字符串尾部加上一个字符'\0',以标识这个字符串的结束。字符串China在内存中的存储形式如图2-2所示。
|
| 图2-2 |
事实上,字符是以ASCII码的二进制形式存放在内存中的。例如,字符a的ASCII码的二进制表示是01100001,其在内存中存储形式如图2-3所示。
|
| 图2-3 |
5.符号常量
常量也可以有一个名字,这就是符号常量。符号常量的用法如例2-5所示。
例2-5
#include #define PI 3.1415926 int main( ) { float r=2.56; float l,s; l=2*PI*r; s=PI*r*r; printf("l=%f\n",l); printf("s=%f\n",s); } |
程序说明。
该程序的功能是输出一个半径为2.56的圆的周长和面积。程序在第二行使用预编译命令"#define"定义了一个符号常量PI,其值为3.1415926。在这个程序中,凡是PI就是指3.1415926。在程序中,使用一个符号来代替一个常数,至少有以下优点。
(1)使程序更清晰,更可读。在阅读大量的程序代码时,数字本身并不能说明其意义。如果定义为符号常量,程序的可读性就增强了。
(2)程序的修改更方便。试想,如果该程序有许多地方都用到π这个值,而π的值只要3.14就可以了,那么我们只要在程序的开始把PI定义为3.14即可,而不需要在程序里找到每个π,然后修改它的值。