int x;
, в области видимости файла, является предварительного определения и ответил @PSkocik и будет действовать как int x = 0;
если определение с инициализацией не существует.
Я раньше считал, что int x
в глобальном масштабе эквивалентен int x = 0
.
Хитрости о «глобальном» int x;
приобретает инициализируются с 0. инициализируются 0, если другой int x = constant;
не существует в любом модуле компиляции.
Поэтому рекомендуется инициализировать явную инициализацию и не рассчитывать на инициализацию по умолчанию на 0 бит, когда объект нуждается в инициализации.
// Does an initialization exist, in some file -maybe?
int x;
// Better. If another file initializes `x`, good to see a compiler/linker error.
int x = 0;
@ pablo1977 'x' ** является ** статической переменной! – Olaf