Пишешь вроде безобидный код:
int score;
cout << score;
И ждёшь 0.
А C++ такой:
— Держи 1874638291. Пользуйся. 😎
Дело в том, что локальная переменная score здесь не инициализирована. Ей не присвоили никакого значения, а значит читать её уже нельзя нормально предсказать.
В памяти на этом месте раньше могло лежать что угодно — кусок старых данных, промежуточный результат другой функции или просто мусор.
Поэтому сегодня программа может вывести 32767, завтра -858993460, а после небольшой правки кода внезапно показать что-то совсем другое.
🔥 Правильнее сразу писать:
int score = 0;
или:
int score{};
☝️ И важный момент: это не «рандомайзер C++». Чтение такой неинициализированной переменной приводит к неопределённому поведению — программа вообще ничего вам не обещает.
Мораль: если переменной должно быть известно начальное значение — задайте его сразу.
А вы когда-нибудь ловили такой «рандом», а потом полчаса искали, откуда он взялся? 😄