1 字符常量
有两种形式:一是用单引号括起来的一个单字符,如′a′,′?′,′=′;二是″转义字符″,即以″\″开头的字符序列。常用的转义字符见下表。
字符形式 功 能
\n 换行
\t 横向跳格(即跳到下一个输出区)
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜杠字符″\″
\′ 单引号(撇号)字符
\″ 双引号(″)字符
\ddd 1到3位8进制数所代表的字符,如\123,表示8进制数123
\xhh 1到2位16进制数所代表的字符,如\x21,表示16进制数23
在转义字符赋给字符变量时,也需要在其二侧加单引号,如:
char c=′\n′;
字符串常量是用一对双引号括起的字符序列,如″abc\n″。
请区别字符变量和字符串常量。′a′是字符常量,″a″是字符串常量。在内存中,字符常量占一个字节,而对字符串常量,则在字符串的后面加一个″字符串结束标志″,以便系统据此判断字符串是否结束。用′\0′(即ASCII代码为0的字符,即″空字符″)作为字符串结束的标志。例如,′a′内存占两个字节,即:a \0 。
2 字符变量
字符变量用来存放一个字符常量,字符变量用char来定义。如:
char a,b;
a=′0′;b=′k′;
printf(″%c %c \n″,a,b);
将输出两个字符ok。
不能将一个字符串常量赋给一个字符变量,如:
a=″0″;b=″k″;
是错误的。
给字符变量赋值可以采用如下三种方法:
(1)直接赋以字符常量,如char=′A′;
(2)赋以″转义字符″,如:
char c=′\\′;
printf(″%c″,c);
输出一个字符″\″。
(3)赋以一个字符的ASCII代码,如字符′a′的ASCII代码为97,则
char c=97;
printf(″%c″,c);
将输出一个字符″a″。实际上,字符数据在内存中是以整数形式(字符ASCII代码)存放的,例如,字符′a′的ASCII码为97,在内存字节中的存放形式为:
01 10 00 01
在输出时,如果指定输出字符的格式符″%c″输出,则输出字符′a′(在输出时先将ASCII码转换为字符)。如果指定按输出整数的格式″%d″输出(如printf(″%d″,c)),则输出一个整数97。
应记住,字符数据与整型数据二者间是通用的,可以互相赋值和运算,如:
int a=′A′;
char c=97;
print(″%d\n″,c-a);
将输出一个整数32,因为′A′的ASCII码为65。