开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 18 天,点击查看活动详情
字符与数字
英文字母。英文中有 26 个字母,其中 A 是第一个字母。现在请编程求出:
- M 是字母表中的第几个字母?
- 第 18 个字母是什么?
输出两个数字,使用换行隔开。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
int ans1;
char ans2;
ans1 = 'M' - 'A' + 1;
ans2 = 'A' + 18 - 1;
cout << ans1 << '\n' << ans2;
return 0;
}
运行结果如下:
13
R
记录:
在上述代码中,我们定义了一个 char 类型的变量 ans2,实际上, char 类型的变量更普遍的用法是存储一个字符,包括英文大小写字母,数字以及标点符号等。这些字符和 0~127 的数字是一一对应的。这些数字和字符的对应表被称为 ASCII 表。
在 ASCII 表中,第 0 ~ 31 个字符是不可见字符,属于控制字符。从第 32 个开始,直到第 127 ,每个编号都对应着一个可见字符,属于打印字符。比如,大写字母 A 和 数字 65 对应,是表中的第65个字符。阿拉伯数字 0 和数字 48 对应,是表中的第 48 个字符(注意,这里的 '0'是带有单引号的,是一个字符,本质上就是一种符号,和数字 0 不是同样的东西 )。
总的来说,
char类型本质上就是一种不大于 127 的整数,只是这些整数可以表示一个对应的字符。
'M' - 'A' + 1:计算字母'M'和 字母'A'之间的差距。该表达式等价于77 - 65 + 1。'A' + 18 - 1:计算字母A后面的第 18 - 1 个字母是什么,所以就知道字母表中第 18 个字母是什么了。变量ans2存储的值为65 + 18 - 1,也就是 82。使用cout输出一个char类型的变量时,它会输出这个变量存储的数组对应的那个字符。当然,如果非要输出 82 这个数字的话,只需把这个变量赋值给一个 int 类型的变量即可(或者使用强制类型转换)。