Я очень новичок в программировании, поэтому прошу прощения, если этот вопрос покажется абсурдно простым. Я работаю над некоторыми дополнительными вопросами в текущей главе моей книги по 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, и я не могу понять, почему. Что еще более странно, так это то, что если я изменяю переменную 'letter' в коде с помощью циклов while на int вместо char, он работает именно так, как я хочу, и завершается, когда должен, просто отображая фактические числа вместо ASCII. ценности.
Только когда «буква» является символом, я получаю бесконечный цикл. Я уверен, что это что-то действительно простое, и я, возможно, просто слишком устал, чтобы видеть это прямо сейчас, но любая помощь/подсказки будут высоко оценены! Хотя технически я получил ответ, меня сводит с ума то, что я не знаю, ПОЧЕМУ второй ответ так ужасно терпит неудачу.
Заранее спасибо.