#c #c 11 #local-variables
Вопрос:
этот фрагмент кода:
int findsmallerNumber(int low, int high, string *str)
{
int counter = 0;
string ss = *str;
for(int i = low 1; i <= high; i )
{
if(ss[i] < ss[low])
counter ;
}
cout<<counter<<" ";
return counter;
}
выдает правильный вывод в виде:
4 4 3 1 1 0
но когда переменная счетчика не инициализирована как таковая:
int counter;
полученный результат является:
4 8 11 12 13 13
Может кто-нибудь, пожалуйста, объяснить это поведение?
Комментарии:
1. кстати, неясно, как вывод с правильным кодом может начинаться с
4 ...
counter
того, когда0
2. @463035818_is_not_a_number Извините, что cout не должен был там быть :(. Отредактировал его сейчас.
Ответ №1:
Может кто-нибудь, пожалуйста, объяснить это поведение?
Значение неинициализированной переменной не определено. Если вы читаете неопределенное значение, то поведение программы не определено. Это объясняет поведение, которое вы наблюдаете. Не считывайте неопределенные значения.