私は本「C++ を使用したプログラミングの原則と実践」を使用してプログラミングを学習しています。演習の 1 つは、while ループを使用して文字 az をループすることです。
今、私は以前に C++ や他の言語でプログラミングしたことがあるので、(while ループを使用しながら) できるだけ少ない行数を使用することにしました。ただし、これには、出力がめちゃくちゃになるという代償が伴いました。
コード:
#include <iostream>
int main(){
char ch = 'a';
while(ch <= 'z')
std::cout << ch << '\t' << (int) ch++ << std::endl;
return 0;
}
出力:
b 97
c 98
d 99
e 100
...
x 119
y 120
z 121
{ 122
今では、代わりに for ループを使用してこれを行うことができたことに気付きました。しかし、私はまだこのコードの何が問題なのか理解できず、本当にイライラしています。
「a」を出力するはずの場所に「b」を出力するため、「ch + 1」を出力するように指示したように見えます。インクリメントは、ch の整数値がアウトストリーム (ポストインクリメント) に入れられるまで行われません。以前にインクリメントしていたとしても、少なくとも印刷された文字とその整数値は対応しているはずです。
このコードが機能しない理由について何か考えはありますか?