Elles ne sont pas statiques du tout:
on peut très bien imaginer le cas d´une variable globale dans un fichier A.cpp, qui est déclarée extern dans un autre fichier B.cpp .
Elle est accédée par un autre fichier, mais elle est pourtant globale.
Il y a donc des globales non statiques.
Donc, l´initialisation à zéro me parait étonnante, puisque le compilateur, restreint à une compilation un fichier source à la fois, ne sait pas, d´une variable globale non-déclarée static explicitement, si elle est externalisée quelque part.
À mon avis, dans ce cas là, si j´étais le compilateur, je jouerais en faveur de la non-initialisation, et dirais au programmeur que il avait juste à la statiquer ou à l´initialiser à la main au lieu de me mélanger.
Et pourtant! Meeeeeep, c´est le contraire qui se produit, il s´amuse à tout initialiser à zéro.
Surprenant. D´autant plus que on dirait bien que ça soit une norme chez les compilos. Serait-ce une surprise de la norme C/C++?
Kelios
---------