1.字符型常量
字符常量在表现形式上是用单引号括起来的一个字符。如‘a’、‘Z’、‘?’等。C语言还有一种特殊形式的字符常量,就是以一个字符“\”开头的字符序列,对于不能显示的字符以及有特定意义和用途的字符常量,只能用转义字符表示。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,打印语句“printf(“%d\n”,a);”中的“\n”代表一个“换行”符。计算机内存中存放的是字符的ASCII值,每个字符占1个字节。表2-3列出了C语言中常用的转义字符及其含义。
表2-3 常用的转义字符及其含义
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII值。例如,\101,八进制数101对应的十进制数是65,是大写字母‘A’的ASCII值,所以,\101表示字母‘A’。
需要注意的是,字符常量只能用单引号括起来,不能用双引号或其他括号。例如,“a”就不是字符常量,而是字符串常量。字符常量只能是单个字符,不能是字符串。数值加单引号与不加单引号是不同的,如‘6’是字符常量,而数值6是整型常量,它们在内存中存放的值是不一样的。数值6在内存中存放6对应的二进制数,而‘6’存放的是其ASCII码值。
【例2-4】程序li2_2_3。
【程序说明】
(1)第一条输出语句“printf("\"Hello\t World\"\n");”中,转义字符\"输出双引号,Hello照原样输出,转义字符\t输出一个水平制表符,World照原样输出,转义字符\"输出双引号,转义字符\n输出换行。
(2)第二条输出语句“printf("\"\110\x65llo\t World\"\n");”中,转义字符\"输出双引号,转义字符\110输出字母H(\110中的110是八进制数,转化为十进制数即72,H的ASCII为72),转义字符\x65输出字母e(\x65中的65是十六进制数,转化为十进制数即101,e的ASCII为101),110照原样输出,转义字符\t输出一个水平制表符,World照原样输出,转义字符\"输出双引号,转义字符\n输出换行。
2.字符型变量
字符型变量用来存放字符常量,只能放一个字符,不能存放一串字符。由于在内存中,字符数据以ASCII存储,它的存储形式与整数的存储形式类似。所以,字符型数据和整型数据之间可以通用。一个字符型数据以整型形式输出时,直接将其ASCII值输出,以字符形式输出时,将其ASCII值转换成相应字符输出。此外,也可以对字符型数据进行算术运算,也就是对它们的ASCII值进行算术运算。下面给出两个例子进行说明。
【例2-5】程序li2_2_4。
【程序说明】(www.xing528.com)
(1)语句“char ch1,ch2;”,声明两个字符型变量,ch1和ch2。
(2)语句“ch1='a';”,为变量ch1赋初值为字符a,ch1内存单元中存放的内容为a的ASCII值,即01100001(转化为十进制为97)。语句“ch2=98;”,为变量ch2赋初值98,98为整型数值,ch2内存单元中存放的内容为98的二进制数01100010,即字母b的ASCII值。
(3)语句“printf("%c,%c\n",ch1,ch2);”,以字母的形式输出变量ch1和ch2,即ASCII值97和98对应的字母a和b。语句“printf("%d,%d\n",ch1,ch2);”以十进制数的形式输出变量ch1和ch2即97和98。
程序运行结果为:
a,b
97,98
【例2-6】程序li2_2_5。
【程序说明】
(1)语句“char ch1,ch2,c1,c2;”,声明4个字符型变量,ch1、ch2、c1和c2。
(2)语句“ch1='a';”,为变量ch1赋初值为字符a,ch1内存单元中存放的内容为a的ASCII值,即01100001(转化为十进制为97)。语句“ch2=A;”,为变量ch2赋初值为字母A,即01000001(转化为十进制为65)。根据ASCII表,可知英文大小写字母的ASCII值是有规律的,且小写字母比相应的大写字母的ASCII值大32。所以,语句“c1=ch1-32;”中,c1=97-32,即65,也就是A的ASCII值。语句“c2=ch2+32;”中,c2=65+32,即97,也就是a的ASCII值。
(3)语句“printf("%c,%c\n",ch1,ch2);”和“printf("%c,%c\n",c1,c2);”是以字符的形式输出4个字符变量的值。
程序运行结果为:
a,A
A,a
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。