4.6.1 字符常量
字符常量是用单引号“'”括起来的一个字符,例如’a'、'b'、'='、'+'、'?’等。在C语言中,字符常量有如下3个特点。
❑ 字符常量只能用单引号括起来,不能用双引号或其他括号。
❑ 字符常量只能是单个字符,不能是字符串。
❑ 字符可以是字符集中的任意字符。但数字定义为字符型数据之后就不能参与数值运算了。如’5’和5是不同的。'5’是字符常量,不能参与运算。
除了上述形式的字符常量外,C语言有一种特殊形式的字符常量,它是以“\”开头的字符序列。例如,在printf函数中出现的“\n”代表一个换行符。它是一种“控制字符”,在屏幕上是不能显示的。在程序中无法用一个一般形式的字符来表示,只能采用特殊形式来表示。
常用的以“\”开头的特殊字符如表4-3所示。
表4-3 常用转义字符的说明
表4-3列出的字符称为“转义字符”,它的意思是将反斜杠(\)后面的字符换成另外的意义。如’\n’中的“n”不代表字母n而作为“回车换行”符。
在表4-3中最后的两行是用ASCII码(八进制数)表示的一个字符,例如’\101’代表ASCII码为65(十进制数)的字符“A”。'\012'(十进制为10)代表“换行”。用’\376’代表图形字符“■”。用表4-2中的方法可以表示任何可输出的字母字符、专用字符、图形字符和控制字符。请注意'\0’或’\000’代表的是ASCII码为0的控制字符,即“空操作”字符,它将用在字符串中。
实例4-4
通过转义字符输出指定的文本字符
源码路径daima\4\4-4
本实例的实现文件为“trance.c”,具体代码如下。
#include <stdio.h> int main(void) { //输出双引号内的各个字符 printf(" ab c\t de\rf\tg\n"); printf("h\ti\b\bj k"); //输出双引号内的各个字符 }
拓展范例及视频二维码
范例4-4-01:使用转义字符输出整数
源码路径:演练范例\4-4-01\
范例4-4-02:二级C笔试选择题
源码路径:演练范例\4-4-02\
在上述代码中,程序并没有预设字符变量,用printf函数直接输出双引号内的各个字符。其中第1个printf函数在第1行左端开始输出“ab c”,遇到“\t”(它的作用是“跳格”)后跳到下一个“制表位置”,在我们所用系统中一个“制表区”占8列。“下一制表位置”从第9列开始,故在第9~11列输出“de”。遇到“\r”【它代表“回车”(不换行)】后返回到本行最左端(第1列),输出字符“f”,然后遇到“\t”后再令当前输出位置移到第9列,输出“g”。“\n”的作用是,使当前位置移到下一行的开头。第2个printf函数先在第1列输出字符“h”,后面的“\t”的作用是使当前位置跳到第9列,输出字母“i”,然后令当前位置移到下一列(第10列)准备输出下一个字符。下面遇到两个“\b”,“\b”的作用是“退一格”,因此“\b\b”的作用是使当前位置回退到第8列,接着输出字符“j k”。
运行上述程序后将输出转移后的字符,执行效果如图4-5所示。
图4-5 执行效果
在使用转义字符时,必须注意以下几点。
(1)在转义字符中只能使用小写字母,每个转义字符只能看作是一个字符。
(2)'\v'(垂直制表)和’\f '(换页符)对屏幕没有任何影响,但会影响打印机执行的操作。
(3)在C程序中,当使用不可打印字符时,通常用转义字符来表示。
(4)转义字符’\0’表示空字符(NULL),它的值是0。而字符’0’的ASCII码是48。因此,空字符’\0’不是字符0。另外,空字符不等于空格字符,空格字符的ASCII码为32而不是0。编程序时,读者应当区分清楚。
(5)如果反斜线之后的字符和它不能构成转义字符,则’\’不起转义作用并将忽略。例如下面的语句。
printf("a\Nbc\nDEF\n");
会输出:
aNbc DEF
(6)转义字符也可以出现在字符串中,但只能作为一个字符来看待。例如求下面两个字符串的长度(注意不包括双引号,双引号之间的才是字符串)。
❑ "\026[12,m":长度为6。
❑ "\0mn":长度为1。
下面的实例演示了使用字符串常量的过程。
实例4-5
使用字符串常量
源码路径daima\4\4-5
本实例的实现文件为“zichang.c”,具体代码如下。
#include<stdio.h> /*包含头文件*/ int main(void){ printf("我爱足球!\n"); /*输出字符串*/ return 0; /*程序结束*/ }
拓展范例及视频二维码
范例4-5-01:变量的内存寻址练习1
源码路径:演练范例\4-5-01\
范例4-5-02:变量的内存寻址练习2
源码路径:演练范例\4-5-02\
代码编写完毕后,执行效果如图4-6所示。
图4-6 执行效果