
2.6 字符型数据
2.6.1 字符型常量
用单引号括起来的一个字符是字符型常量,且只能包含一个字符!例如,'a'、'A'、'1'、' '是正确的字符型常量,而'abc'、'a'、" "是错误的字符型常量。表2.6.1中给出了各种转义字符及其作用。以“\”开头的特殊字符称为转义字符,转义字符用来表示回车、退格等功能键。
表2.6.1 各种转义字符及其作用

为便于理解转义字符,请读者按自己的想法编写图2.6.1所示的程序并运行,查看打印效果。

图2.6.1 理解转义字符的程序示例
图2.6.1中程序的执行效果如图2.6.2所示。

图2.6.2 图2.6.1中程序的执行效果
思考题:为什么abc\rd打印出的效果是dbc?
2.6.2 字符数据在内存中的存储形式及其使用方法
字符型变量使用关键字char进行定义,一个字符型变量占用1字节大小的空间。一个字符常量存放到一个字符型变量中时,实际上并不是把该字符的字型放到内存中,而是把该字符的ASCII码值放到存储单元中,每个字符的ASCII码值详见附录A。打印字符型变量时,如果以字符形式打印,那么计算机会到ASCII码表中查找字符型变量的ASCII码值,查到对应的字符后会显示对应的字符,如图2.6.2所示。这样,字符型数据和整型数据之间就可以通用。字符型数据既可以以字符形式输出,又可以以整数形式输出,还可以通过运算获取想要的各种字符,如图2.6.3所示,读者可以按照自己的想法修改例子。

图2.6.3 查找ASCII码值并显示对应的字符
图2.6.4中程序的执行结果如图2.6.5所示。

图2.6.4 获取字符的程序

图2.6.5 图2.6.4中程序的执行结果
对于字符型变量,无论是赋ASCII码值还是赋字符,使用%c打印输出时得到的都是字符,使用%d打印输出时得到的都是ASCII码值。将小写字母转换为大写字母时,由附录A中的ASCII码表发现小写字母与大写字母的差值为32,因此将c减去32就可以得到大写字母A。