Каждый из них видит только своего. Переменная не может быть «видна» снаружи scope , в котором она объявлена.
Если, с другой стороны, вы сделали это:
static int x;
void foo() {
static int x;
}
int main() {
foo();
}
тогда foo()
видит только свой локальный x
; глобальное x
было «скрыто» им. Но изменения одного не влияют на ценность другого.