Переменная constant_counter инициализируется как постоянное целое число.Неожиданное изменение константного целого C++
cout < < stable_counter;
До тех пор, пока у меня есть вышеуказанное утверждение где-либо перед следующим кодом, функция работает как ожидалось и проверяет, является ли целочисленный ввод или не является обходным числом.
Проблема заключается в том, что, когда строка cout отсутствует, константное целое изменяется в следующих инструкциях if. Я проверил это, напечатав файл stable_counter перед вводом if-else, а затем после if-else.
Без линии cout, constant_counter изменяется на 4-значное число.
for (int i = 0; i < 10; i++)
{
if (CheckArr[i])
{
num_of_unique++;
}
}
if ((steady_counter == num_of_unique) & (final == NumArr[0]))
{
return true;
}
else
{
return false;
}
}
Любая идея, что происходит? Зачем нужна строка cout для поддержания константы integer stable_counter?
Скомпилируйте все предупреждения и информацию об отладке (например, с помощью 'g ++ -Wall -g'). Затем ** используйте отладчик ** (например, 'gdb'). Узнайте о [неопределенном поведении] (http://en.wikipedia.org/wiki/Undefined_behavior). Читайте больше учебников по C++. –
Это немного беспорядок. Я не понимаю, почему вы решили использовать VLA. Наверное, случайно. Возможно, вы не знаете, что такое VLA, и используете это непреднамеренно. Я не понимаю, почему вы не используете стандартные контейнеры. Вы программируете на C++, а не C. –
@Basile привет! Не могли бы вы рассказать о «предупреждениях и отладочной информации»? Вышеуказанные компилируются без каких-либо ошибок. Должен ли я включить основную функцию с помощью тестового кода? – lostlostlostlostlost