c 语言中 char 表示字符类型关键字,属于 c 语言基础内置数据类型,主要用来存储单个字符,底层本质是占用 1 个字节也就是 8 位的小整数,计算机不会直接保存文字本身,而是保存字符对应的 ASCII 编码数值,所以 char 既可以存放字符,也可以当作小型整数参与算术运算,这是 char 非常重要的底层特性,很多初学者误以为 char 只能存字母,不知道它本质是整数类型,在 c 语言里面 char 是标准关键字,不能作为用户标识符,常用来定义单个字符变量字符数组字符指针,也是处理字符串的基础类型,考试和编程题高频考点就是 char 的存储范围,字符和 ASCII 码转换,有符号 char 和无符号 char 的区别。
基础定义与底层原理
char 类型固定占用 1 字节内存,一共 8 个二进制位,默认情况下大部分编译器 char 是有符号类型,取值范围是负 128 到正 127,如果加上 unsigned char 修饰,就变成无符号类型,取值范围是 0 到 255。
书写字符常量的时候,字符要用单引号包裹,比如 a,存储的时候内存里面保存的是这个字符对应的 ASCII 码数值,字母 a 对应的十进制数值是 97,大写 A 对应的十进制数值是 65,所以 char 变量既可以用格式符 c 输出字符形式,也可以用格式符 d 输出对应的整数编码。
char 常见使用场景对照表
| 写法 | 类型 | 用途 |
|---|---|---|
| char c | 单个字符变量 | 保存单个字符,比如字母符号 |
| char str[20] | 字符数组 | 存放字符串,末尾需要补结束标记 |
| char *p | 字符指针 | 指向字符或者字符串首地址 |
| unsigned char uc | 无符号字符 | 存放 0 到 255 数值,常用于字节数据 |
| signed char sc | 有符号字符 | 显式声明有符号,范围负 128 到 127 |
关键深度要点
第一 char 和 ASCII 转换,char c = a,等价于把 97 赋值给变量 c,代码里面可以直接写 c 加 1 运算,结果就是 98,对应的字符就是 b,这就是字符自增得到下一个字母的原理。
第二 字符串和单个字符区分,单引号是单个字符常量,双引号是字符串,字符串末尾自动带结束标记,不能把双引号字符串直接赋值给单个 char 变量。
第三 有符号 char 溢出,因为是 8 位有符号数,数值超过 127 之后会发生溢出变成负数,处理字节数据图像数据串口数据的时候,一般推荐使用 unsigned char,避免符号位带来错误。
第四 char 是关键字,不能拿来命名变量函数,如果把变量命名成 char,编译器会直接报错,这点和普通用户标识符不一样。
第五 字符转义字符,比如换行回车制表符,这类转义字符同样属于 char 类型,仍然占用 1 字节。
常见误区
误区 1 认为 char 只能保存英文字母,不能存数字符号,实际上所有 ASCII 表里面符号都可以存入 char。
误区 2 认为 char 里面保存的是文字图形,内存存储的是编码整数,显示的时候才根据 ASCII 表转换成字符。
误区 3 混淆 char 和 string,c 语言没有内置 string 类型,字符串依靠 char 数组实现。
综合来说,c 语言中 char 表示字符类型关键字,底层是 1 字节整数,依托 ASCII 编码存储字符,支持字符和数值互相转换,同时区分 signed char 和 unsigned char,掌握这个知识点,后续学习字符数组字符串处理输入输出会更加顺畅。
【常见问题】
问题 1 c 语言中 char 表示什么,它占几个字节
回答 1 c 语言中 char 表示字符类型关键字,标准 c 语言中 char 固定占用 1 个字节也就是 8 位,c 语言中 char 表示的本质是小整数,依靠 ASCII 编码保存字符。
问题 2 c 语言中 char 表示什么,为什么可以做加减运算
回答 2 c 语言中 char 表示字符类型,底层存储是 ASCII 整数值,所以 c 语言中 char 表示的变量可以参与加减算术运算,运算之后得到新编码,再按字符输出就变成下一个字符。
问题 3 c 语言中 char 表示什么,unsigned char 和 char 区别是什么
回答 3 c 语言中 char 表示字符类型,默认大多是有符号 char,范围负 128 到 127,c 语言中 char 表示如果加上 unsigned 修饰,变成无符号 char,取值范围 0 到 255,适合存储字节数据。
【免责申明】
本文内容仅作为 c 语言编程基础知识科普,不同编译器对默认 char 是否有符号存在平台差异,实际开发请参考对应 c 标准与编译器官方文档,本文不构成工程开发方案推荐。


