本讲定位:二级性价比最高的一讲。官方大纲在这一块写得异常具体——“能识别常用字符的 ASCII 码(空格:32、”0”:48、”A”:65、”a”:97),并掌握 ASCII 码和字符之间相互转换的方法”。把四个数字直接写进大纲,等于明说了要考。 这一讲把一级第 04 讲”
char的本质是小整数”这条性质彻底用起来,学完之后大小写转换、字符转数字这两类操作会跟你到八级。对应官方大纲:二级知识块 4「ASCII 编码」——常见字符的 ASCII 编码、字符编码之间的相互转换。
前置知识:一级第 04 讲(
char占 1 字节、本质是小整数)、第 05 讲(算术运算)、第 06 讲(关系运算)。代码说明:本讲所有代码均已用 g++ 11.5(
-std=c++11)编译运行验证,输出结果即为文中标注结果。
第一道(单选):
若字符
'A'的 ASCII 码值为 65,则字符'F'的 ASCII 码值是( ) A. 69 B. 70 C. 71 D. 无法确定
第二道(单选):
设
char c = '8';,则表达式c - '0'的值是( ) A. 8 B. 56 C.'8'D. 编译错误
答案:第一道选 B,第二道选 A。
'A' 到 'F' 隔了 5 个字母(A→B→C→D→E→F),所以 $65 + 5 = 70$。关键在于知道字母的编码是连续的。c - '0' 就是 $56 - 48 = 8$——这是把”字符 8”变成”数字 8”的标准写法,全世界都这么写。这两道题正好是本讲的两条主线:编码的连续性与字符与数字的互转。
计算机里只有 0 和 1,存不了字母,只能存数字。于是人们约定:给每个字符编一个号,存的时候存号,显示的时候按号查表还原成字符。
这张”字符 ↔︎ 数字”的对照表,就是 ASCII 码表。
ASCII 全称 American Standard Code for Information Interchange,中文叫”美国信息交换标准代码”。
char 占 1 字节,正好装得下(一级第 04 讲)。⚠️ 两个高频考点:标准 ASCII 是 7 位、128 个字符;汉字不在 ASCII 里(汉字用 GB2312、GBK、UTF-8 等编码,一个汉字通常占 2~3 字节)。