char类型

char类型用于存储字符,例如字母或者标点符号,但是从技术层面看,char是整数类型。因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符,即使用特定的整数表示特定的字符。
美国最常用的是ASCII编码。
标准ASCII编码的范围是0—127,只需要7位2进制数即可以表示。
C语言把1字节定义为char类型占用的位(bit)数,因此无论16位还是32位系统,都可以使用char类型。

1声明char类型变量

char response;

2字符常量和初始化

如果要把一个字符常量初始化为字母A,不必背ascii码,可以初始化字母A赋值给变量即可:
char mm=’A;
在C语言中用单引号括起来的单个字符被称为字符常量。编译器一发现‘A’,就会将其转换成相应的代码值。单引号必不可少。
实际上字符是以数值形式储存的,所以也可以使用数字代码值来赋值:
char mm=65;//对于ASCII来说,这样做没有问题,但是这是不好的编程风格。
在本例子中,虽然65是int类型,但是它在char类型能表示的范围内,所以将其赋值给mm没有问题。由于65是字母A对应的ascii码,因此本例子是把A赋值给mm。
c语言是将字符常量视为int类型而非char类型。例如,在int为32位,char为8位的ascii系统中有如下代码 char grade=‘B’,本来‘B’对应的数字66储存在32位的存储单元中,现在却可以储存在8位的存储单元grade中。利用字符常量的这种特性,可以顶一个字符常量‘FATE’,即把4个独立的8位ASCII码储存在一个32位的存储单元中。如果把这样的字符常量赋给char类型变量grade,只有最后八位有效,因此,grade的值是‘E’!!!!!!!!!!!!!

非打印字符

单引号只适用于字符,数字和标点符号。
如果要用八进制ASCII码表示一个字符,可以在编码值前面加一个反斜杠\,并用单引号括起来,例如编译器不识别警报字符\a,可以使用ascii码来代替beep=’\007’,可以省略前面的0,‘\07甚至’\7’都可以。即使没有前缀0,编译器在处理这种写法时,仍会解释为8进制。