在main之后声明的变量是否可能具有文件范围?

hac*_*cks 4 c scope control-structure

运行此代码后:

#include <stdio.h>
int x;
int main(void)
{
    printf("%d\n",x);
    return 0;
}
int x=5; 
Run Code Online (Sandbox Code Playgroud)

我预计输出应该是0.由于程序的顺序控制结构int x;应首先执行然后0打印,最后int x=5;应该执行.但它正在提供输出5.

是怎样的程序访问5xprintf

Som*_*ude 7

第一个用作前向声明,后者用作实际定义.