Я использую книгу «Принципы и практика программирования на C ++» для изучения программирования, и одним из упражнений является циклическое прохождение символов az с помощью цикла while.
Теперь я программирую на 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, и я тоже это сделал (это сработало).Но я до сих пор не понимаю, что не так с этим кодом, и это меня действительно раздражает.
Похоже, что я сказал ему вывести «ch + 1», так как он печатает «b», гдеон должен напечатать «а».Инкремент не выполняется до тех пор, пока целое значение ch не будет помещено в выходной поток (постинкремент).И даже если бы я увеличил его ранее, по крайней мере, напечатанные символы и их целочисленные значения должны соответствовать.
Есть идеи, почему этот код не работает?