Я очень новичок в программировании, поэтому я прошу прощения, если этот вопрос кажется нелепо простым.Я работаю над некоторыми дополнительными вопросами в текущей главе моей книги C ++.Я действительно нашел правильный ответ на проблему, но при этом я столкнулся с ситуацией, которая сводит меня с ума, потому что я не могу понять, ПОЧЕМУ одно конкретное решение работает, а другое нет.
Итак, проблема состоит в том, чтобы напечатать значения ASCII между 32 и 127 в несколько строк по 16 символов в строке.Решение, к которому я пришел (работает правильно), таково:
#include <iostream>
using namespace std;
int main()
{
char letter;
int count = 0;
for (letter = 32; letter < 127; letter++, count++)
{
if (count == 16)
{
cout << endl;
count = 0;
}
cout << letter << " ";
}
cout << endl;
return 0;
}
Опять же, приведенный выше код работает нормально и делает то, что я хочу.Трудность заключается в том, что я пытался до этого.Я пытался проделать ту же проблему с помощью вложенного цикла while, например так:
#include <iostream>
using namespace std;
int main()
{
char letter = 32;
int count;
while (letter < 127)
{
count = 0;
while (count < 16)
{
cout << letter << " ";
letter++;
count++;
}
cout << endl;
}
cout << endl;
return 0;
}
Этот цикл while просто работает бесконечно, а также выплевывает мусор после нужных символов ASCII, и я не могу понятьпочему.Что еще более странно, если я изменю переменную «буква» в коде с помощью цикла while на int вместо char, он будет работать именно так, как я хочу, и завершится, когда это необходимо, просто отображая действительные числа вместо ASCIIценности.
Только когда «буква» является символом, я получаю бесконечный цикл.Я уверен, что это что-то действительно простое, и я, возможно, просто слишком устал, чтобы видеть это прямо сейчас, но любая помощь / подсказки будет высоко ценится!Хотя технически я получил ответ, меня сводит с ума то, что я не знаю, ПОЧЕМУ второй ответ терпит неудачу так ужасно.
Заранее спасибо.