3.5.3 字符型常量
字符型常量用来表示单个字符,其用一对单引号括起来。其中单引号只起定界作用,并不表示字符本身,例如‘F','5','?'。在C51中,字符常量的单引号中的字符不能是单引号(’)或反斜杠(\)。如果需要使用这两个字符,则需要采用转义字符来表示,这将在后面的内容中进行介绍。
在C51中,字符是按其所对应的ASCII码值来存储的,一个字符占一个字节。因此也可用该字符的ASCII码值来表示该字符,例如十进制数65表示大写字母‘A',十六进制数0x5d表示符号']',八进制数0110表示大写字母'B’等。
另外,格式控制符是无法在程序中显式地表示的。因此,这些格式控制字符不能用符号表示,但可以用ASCII码值来表示。例如,十进制数13表示回车符,八进制数033表示Esc,十六进制数0x0A表示换行符等。
由于C51语言中,字符常量和整型数据(short型)具有相同的取值范围,所以字符常量可以像整型数据一样在程序中进行相关的运算,示例如下。
‘5’-5;//执行结果53-5=48
‘B’+32;//执行结果66+32=98
‘b’-32;//执行结果98-32=66
注意这里需要强调的是字符‘5’和数字5的区别,前者是字符常量,后者是整型常量,它们的含义和在计算机中的存储方式都截然不同。
字符常量的表示以及字符常量的运算程序示例如下。
include<stdio.h>//头文件
void main()//主函数
{
char c1,c2;//定义字符变量
c1=‘A’;//赋值
c2=‘B’;
c1=c1+32;//转换大小写
c2=c2+32;
printf(“c1=%c\nc2=%c”,c1,c2);//输出结果
}
这段程序可在KeilµVision3集成开发环境中运行,执行结果如下。
c1=a
c2=b
本例是将两个大写字母转换为小写字母。因为‘a'的ASCII码为97,而'A'为65,'b'的ASCII码为98,'B'则为66。从ASCII代码表中可以看到每一个小写字母比大写字母的ASCII码大32,即'a'='A’+32。