再学C语言7:数据类型(3)——char类型

Source

char类型用于存储字母和标点符号之类的字符

在技术实现上,char是整数类型,因为char类型实际存储的是整数而不是字符

为了处理字符,计算机使用一种数字编码,用特定的整数表示特定的字符

经典和常用的是ASCII码,标准ADCII码值的范围为0~127

其他字符集:

1)Unicode字符集,能够表示世界范围内多种字符集系统,目前已有超过96000个字符

2)国际标准化组织(ISO)和国际电工技术委员会(IEC)为字符集开发的ISO/IEC 10646标准,Unicode与10646保持兼容

一、char类型变量的声明

char a;
char b, c;

二、字符常量及其初始化

char code = 'A';

单引号中的一个字符是C的一个字符常量,编译器在编译时会自动将其转换为相应的编码值

char code = 'A';     // 将A视为一个字符常量
char code = A;       // 将A视为一个变量名
char code = "A";     // 将A视为一个字符串

字符实际上以数值的形式存储,也可以使用数值编码赋值:

char code = 65;

这种赋值方式有效的前提是系统采用的是ASCII码,因此实际中推荐使用字符常量赋值,而不是数值编码赋值

三、非打印字符

非打印字符:退格、换行等字符

非打印字符的3种表示方法:

1)使用数值编码赋值

char beep = 7; // 蜂鸣字符的ASCII值为7

2)使用特殊的符号序列——转义序列(Escape Sequence)

转义序列
序列 意义 备注
\a 警报 具体现象取决于计算机硬件
\b 退格 常用的输出设备控制字符
不一定适用于所有设备
\f 走纸
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 反斜杠(\) 保证使用\, ', "时不会与指令冲突
\' 单引号(')
\" 双引号(")
\? 问号(?)
\0oo

八进制(o表示一个八进制数字)

\xhh 十六进制(h表示一个十六进制数字)

3)使用十六进制形式表示字符常量(C90标准开始):反斜杠后跟一个x或X,再加上1到3位十六进制数字

四、字符的打印

printf()函数使用%c说明符打印一个字符

#include <stdio.h>
int main(void)
{
    char ch;
    printf("Please enter a character.\n");
    scanf("%c", &ch);
    printf("You have entered character %c.\n", ch);
    return 0;
}

运行结果:

五、有符号和无符号

一些C实现把char当做有符号类型,其类型值的典型范围为-128~127;一些C实现把char当做无符号类型,其类型值的典型范围为0~255;具体需要查编译器手册,或者通过limits.h头文件查询

在C90标准中,C允许在char之前使用unsigned和signed,无论默认char是有符号或无符号,unsigned char表示无符号,signed char表示有符号;处理小整数时,使用带修饰词的char类型,处理字符时,使用不带修饰词的标准char类型即可