They are not two variables. They are the same.
extern int x;
is an ad x.
and
int x=0;
gives a definition for x. It is beautiful and truly.
You may have several ads like:
extern int x;
extern int x;
too, and it will compile too.
, , . . 6.2.2 .
. m .