>>520
ごめん、説明で大文字の文字コードと小文字の文字コードを丸ごと入れ替えて書いてしまったorz
通常の訂正だとわけがわからなくなるので519は丸ごと破棄して以下の説明で置き換えて欲しい。
'a'と0x61が同じ意味ってのも説明し直してみた。
---

文字はそれぞれコードがついているのは知っていると思う。
以下のようになっている。文字(16進のコード)のように表している。

A(41) B(42) C(43) 〜 Z(5a)
a(61) b(62) c(63) 〜 z(7a)

C言語では'a'という表記は文字aを表す文字コードの整数値と同じ意味を持つ。
だから、intの変数xに、「x = 'a';」と代入しても「x = 0x61;」と代入しても、
同じ値が入る。

さてここで、'c' - 'a'を考える。この値は63-61=2だ。
で、’A'+2はどうかというと、41+2=43='C'になる。
即ち 'c' - 'a' + 'A' = 'C' になる。