C++ объявляя несколько целых чисел, печатает разные значения
Я пытаюсь выучить C++, и я столкнулся с очень досадным несоответствием:
#include <iostream>
using namespace std;
int main (){
int var1,var2,var3,var4,var5,var6,var7;
cout << var1 << endl;
cout << var2 << endl;
cout << var3 << endl;
cout << var4 << endl;
cout << var5 << endl;
cout << var6 << endl;
cout << var7 << endl;
return 0;
}
Возвращает следующее:
0
4196128
0
570985680
32767
0
0
Почему я получаю разные значения для этих неустановленных значений? Разве я не должен получить 0 для каждой переменной? Что представляет собой вывод, который я получаю?
2 ответа
Неинициализированные локальные переменные будут иметь неопределенные значения, которые будут казаться случайными. Чтение их неопределенного значения приводит к неопределенному поведению.
Чтение из неинициализированного int
является неопределенным поведением. Вывод, который вы видите, может быть данными, которые в настоящее время хранятся в ячейках памяти, зарезервированных для ваших переменных.
Но это не важно, потому что все может случиться; важно предотвратить неопределенное поведение, и это лучше всего сделать здесь, инициализируя ваши переменные:
int var1 = 0;
int var2 = 0;
// and so on
Также обратите внимание, что ваш компилятор может предупредить вас об этом, если вы используете соответствующий уровень предупреждения. Посмотрите это в документации вашего компилятора и привыкните не игнорировать никаких предупреждений.