【AtCoder】C++でアルファベットの次の文字を出力する

最近は時間がある時に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が出力されるようですね。

soon
  • soon
  • 1986年生まれのjavaプログラマー。28歳の時に7年働いた販売士からプログラマーに転職をする。常駐先を転々としながら日々生きています。