char类型及字符常量
char类型用于存储字母和标点符号之类的字符,但是在技术实现上char却是整数类型,这是因为char类型实际存储的是整数而不是字符。
char grade = 'A';
此表达式表示定义了一个字符常量'A',并将这个字符常量赋给一个char变量grade;
因为字符实际上以数值的形式存储,所以也可以使用数值编码来赋值:
char grade = 65; /*对于ASCⅡ,这是可以的;但是一种不好的编程风格*/
上面的语句中,65是int类型,但是它在char大小范围之内,所以这样赋值完全允许。由于65是字母A的ASCⅡ码,此语句将字符'A'赋予变量grade。但是要注意,这个结果的假设是系统使用的是ASCII码。而使用'A'代替65进行赋值则可在任意系统中正常工作。因此推荐使用字符常量,而不是数值编码。
然而,C将字符常量视为int类型而非char类型。例如,在int类型为32位和char类型为8位的ASCⅡ系统中,下列代码:
char grade = 'B';
意味着'B'作为数值66存储在一个32位单元,而赋值后的grade则把66存储在一个8位的单元中。利用字符常量的这个特性,可以定义一个字符常量'FATE',这将把4个独立的8位ASCⅡ码存储在一个32位的单元中。然而,如果把这个字符常量赋给一个char变量,那么只有最后8位会起作用,因此变量的值为'E'。