【AtCoder】C++でアルファベットの次の文字を出力する
2020-02-20
最近は時間がある時にAtCoderで問題を解いているのですが、その中で今日は以下の問題について考えてみました。
問題
A – Next Alphabet
z
でない英小文字 C が与えられます。アルファベット順で C の次の文字を出力してください。
つまりaを入力したらbが出力。sを入力したらtが出力されるということです。
aの次ってことは確か+1すればなったような気がする…。ということで以下のように記載。
#include <iostream> using namespace std; int main() { char alphabet,alphabetNext; cin >> alphabet; alphabetNext = alphabet +1; cout << alphabetNext << endl; }
動かしてみると期待通りになっているようです。+1するだけでいいのであればとても楽ですね。
でもなんでこれで次の文字が出力されるのでしょうか?
アスキーコードで次の文字だから
アスキーコードとは文字や数字、記号などを整数値に割り当てた文字コードのことで以下のようなものです。
10進数 | 16進数 | 文字 |
97 | 0x61 | a |
98 | 0x62 | b |
99 | 0x63 | c |
100 | 0x64 | d |
101 | 0x65 | e |
102 | 0x66 | f |
103 | 0x67 | g |
104 | 0x68 | h |
105 | 0x69 | i |
106 | 0x6a | j |
107 | 0x6b | k |
108 | 0x6c | l |
109 | 0x6d | m |
110 | 0x6e | n |
111 | 0x6f | o |
112 | 0x70 | p |
113 | 0x71 | q |
114 | 0x72 | r |
115 | 0x73 | s |
116 | 0x74 | t |
117 | 0x75 | u |
118 | 0x76 | v |
119 | 0x77 | w |
120 | 0x78 | x |
121 | 0x79 | y |
122 | 0x7a | z |
例えばaであれば10進数で97が割り当てられていますが、a+1とすることで内部的に98となり、つまりbが出力されるようですね。