Скорей всего результат запуска программы будет 0, но этот результат неконтролируемый и в зависимости от выбранного компилятора будет "мусор", т.е. например вот такое число: 7177728.
В этом случае компьютер присвоит некоторую неиспользуемую память значению x. Затем он отправит значение, находящееся в этом месте памяти, в std::cout
, который выведет это значение (интерпретированное как целое число). Но какое значение оно выведет? Ответ - "кто знает!", и ответ может меняться (а может и не меняться) каждый раз, когда вы запускаете программу.
Внимание
Некоторые компиляторы, такие как Visual Studio, инициализируют содержимое памяти некоторым предустановленным значением, когда вы используете конфигурацию отладочной сборки. Этого не произойдет при использовании конфигурации релизной сборки. Поэтому, если вы хотите запустить указанную выше программу самостоятельно, убедитесь, что вы используете конфигурацию релизной сборки . Например, если вы запустите указанную выше программу в конфигурации отладки Visual Studio, она будет последовательно выводить -858993460, потому что это значение (интерпретируемое как целое число), которым Visual Studio инициализирует память в конфигурациях отладки.
Большинство современных компиляторов попытаются определить, используется ли переменная без присвоения ей значения. Если они смогут это определить, они, как правило, выдадут предупреждение или ошибку времени компиляции. Например, компиляция указанной выше программы в Visual Studio выдаст следующее предупреждение:
c:\VCprojects\test\test.cpp(11) : warning C4700: uninitialized local variable 'x' used
Если ваш компилятор по этой причине не позволяет вам скомпилировать и запустить приведенную выше программу, вот возможное решение этой проблемы: