Sie sehen jeweils nur ihre eigene. Eine Variable kann außerhalb des Geltungsbereichs , in dem sie deklariert ist, nicht "gesehen" werden.
Wenn Sie das andererseits getan haben:
%Vor% then foo()
sieht nur seine lokale x
; Das globale x
wurde dadurch "versteckt". Aber Änderungen an einem haben keinen Einfluss auf den Wert des anderen.
Die Variablen sind unterschiedlich, jede Funktion hat ihren eigenen Umfang. Obwohl beide Variablen für die Lebensdauer des Prozesses andauern, stören sie sich nicht gegenseitig.
Der Compilator übersetzt jede Variable auf eine eindeutige Weise, wie zum Beispiel foo_x
und bar_x
in Ihrem Beispiel, so dass sie unterschiedlich behandelt werden.
Tun Sie das nicht, da Ihr Code nach einiger Zeit schwer zu lesen und zu warten ist, da Sie nicht sofort erkennen können, auf was x
sich beziehen.
Tags und Links c++ function static static-variables