字符也是数
约 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' 等于几?
登录 后可看答案