Есть 2 примера программы. в первоем примере требуется обязательно указать ch определенное значение
int main()
{
int chcount = 0;
int wdcount = 1;
char ch = 'a'; //ch должна иметь определенное значение
cout << "Введите строку: ";
while (ch != '\r')
{
ch = _getche();
if (ch == ' ')
wdcount++;
else
chcount++;
}
cout << "\nСлов: " << wdcount << endl;
cout << "Букв: " << (chcount-1) << endl;
return 0;
}
во втором примере уже не требуется присваивать ch значение
int main()
{
int chcount = 0;
int wdcount = 1;
char ch; // уже без символа 'a'
cout << "Введите строку: ";
while ((ch=_getche()) != '\r')
{
if (ch == ' ')
wdcount++;
else
chcount++;
}
cout << "\nСлов: " << wdcount << endl;
cout << "Букв: " << chcount << endl;
return 0;
}
Это из книги ООП C++ Лафоре 113 страница https://books.google.by/books?id=vUXt0ZJD600C&lpg=PP1&hl=ru&pg=PA113#v=onepage&q&f=true
Уже перечитываю не один раз эту главу и не могу понять почему именно в этом участке требуется указать значение ch
Если убрать значение у ch в первом примере то тогда компилятор ругается на ошибку cpp(15): error C4700: использована неинициализированная локальная переменная "ch"
немного погуглив:
Инициализация означает, что переменная запущена в работу, ей присвоено начальное значение, она инициализирована. Без присвоения начального значения переменная просто объявлена, а с начальным значением она еще и инициализирована.
Остается вопрос какой участок кода требует инициализации переменной ch? По логике осмелюсь предположить строчка ch = _getche(); требует инициализации от char ch = 'a'; но не уверен
Ну в первом примере вы в цикле, в начале, пытаетесь проверить значение неинициализированной переменной ch. Строка
while (ch != '\r')
Запрашивает проверку по сути неинициализированной переменной(если конечно вы не пишете char ch = 'a') это и вызывает ошибку, и слава богу, я вам скажу.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей