Выбор ответа Junior Типы и неопределённое поведение спрашивают часто обновлено

Чтение неинициализированной переменной

Вопрос

Что произойдёт при выполнении int x; std::cout << x; внутри функции?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Неопределённое поведение. Чтение неопределённого значения локальной переменной (без инициализации) это UB.

Варианты ответа

  1. Выведется 0
  2. Выведется случайное, но вполне определённое число из стека
  3. Ошибка компиляции
  4. Неопределённое поведениеправильный ответ

Разбор

Чтение неопределённого значения локальной переменной (без инициализации) это UB. Компилятор может, например, выкинуть ветку или подставить разные значения в разных местах. GCC выдаст предупреждение -Wuninitialized, но не ошибку.

  • Нулём инициализируются только статические и глобальные переменные.
  • «Мусор со стека» это лишь одно из возможных проявлений UB, а не гарантия.
  • Код компилируется. В C++26 для таких чтений вводится понятие erroneous behaviour, но в C++20/23 это UB.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.