Рассмотрим код:
#include <stdio.h>
int x;
int main (void)
{ }
Значение x равно 0 внутри main. Но почему? Я не заявил, что это static. Или предполагается, что static, поскольку он находится вне функции?
Если это верно, то как оно отличается от extern?