Все истории

🎰 Почему C++ выводит случайное огромное число вместо нуля?

Копия публикации из архива канала. Дата и текст сохранены.

Пишешь вроде безобидный код:
int score;
cout << score;
И ждёшь 0.

А C++ такой:
— Держи 1874638291. Пользуйся. 😎

Дело в том, что локальная переменная score здесь не инициализирована. Ей не присвоили никакого значения, а значит читать её уже нельзя нормально предсказать.

В памяти на этом месте раньше могло лежать что угодно — кусок старых данных, промежуточный результат другой функции или просто мусор.

Поэтому сегодня программа может вывести 32767, завтра -858993460, а после небольшой правки кода внезапно показать что-то совсем другое.

🔥 Правильнее сразу писать:
int score = 0;
или:
int score{};

☝️ И важный момент: это не «рандомайзер C++». Чтение такой неинициализированной переменной приводит к неопределённому поведению — программа вообще ничего вам не обещает.

Мораль: если переменной должно быть известно начальное значение — задайте его сразу.

А вы когда-нибудь ловили такой «рандом», а потом полчаса искали, откуда он взялся? 😄