int
не инициализируется в ноль. Когда вы говорите int i;
, все, что вы делаете, резервируете место для целого числа. Значение в этом месте не инициализировано. Это делается только с вами, скажем, int i = 0;
(или int i = 5;
, в этом случае значение инициализируется до 5). В любом случае, хорошей практикой является инициализация переменной с некоторым известным значением. В противном случае i
содержит любое случайное значение, которое было в том месте памяти, когда для него было зарезервировано пространство. Вот почему cout
выводит случайное значение.
Значения по умолчанию зависят от реализации языка. Некоторые языки будут инициализировать его с некоторым «нормальным» значением (например, 0). Как правило, я всегда инициализирую переменную некоторым разумным значением (если только я не знаю, что собираюсь инициализировать ее чем-то другим , наверняка , прежде чем использовать) Как я упоминал ранее, неразумно предполагать , что значение будет чем-то вменяемым. Это может или не может быть (в зависимости от языка или реализации интерпретатора / компилятора для этого языка).