字符也是数

8 分钟

计算机里没有"字母",每个字符都用一个整数编号存着,这套编号就是 ASCII 码。关键事实:大写 AZ 的编号连续,小写 az 连续,数字字符 '0'~`'9'` 也连续。既然本质是数,字符就能直接比较大小、做加减。

char c = 'C';
cout << (int)c << "\n";      // 输出 67,C 的 ASCII 编号
cout << c - 'A' << "\n";     // 输出 2,C 是第 3 个字母
cout << ('A' < 'B') << "\n"; // 输出 1,字符能比大小

正因为连续,"第几个字母"可以用减法算出来:'C' - 'A' == 2,说明 C 是第 3 个(下标 2)。这一步是后面统计字母、大小写转换的基础。

注意两点:一是尽量写字符常量 'A' 而不是硬记数字 65,可读性和正确性都更好;二是大写、小写、数字这三段各自连续,但彼此之间并不紧挨着('Z''a' 中间还隔着几个符号),别跨段做减法。char 本质是 1 字节整数,参与运算会自动当成它的编号。

小纸条

'C' 减 'A' 等于几?

登录 后可看答案

字符也是数 · 考级冲刺 · op599 课程