为什么这个C代码没有抛出任何错误?

为什么这个C代码没有抛出任何错误?,c,definition,variable-declaration,C,Definition,Variable Declaration,我对以下陈述有一些疑问: C允许在第一次声明时再次声明全局变量 不初始化变量 考虑以下代码段: #include<stdio.h> int x; //line 1 int x = 5; //line 2 int main(void) { printf("%d", x); return 0; } 上面的代码段会导致类似于重新定义“x”的错误。我不应该因为默认情况下x被初始化为0而得到同样的错

我对以下陈述有一些疑问:

C允许在第一次声明时再次声明全局变量 不初始化变量

考虑以下代码段:

#include<stdio.h>
int x;                       //line 1
int x = 5;                   //line 2  
int main(void)
{
  printf("%d", x);
  return 0; 
}
上面的代码段会导致类似于重新定义“x”的错误。我不应该因为默认情况下x被初始化为0而得到同样的错误吗

int x;
int x=5;

问题2。第1行和第2行都定义了全局变量x。这句话对吗?我已经读到,我们只能定义一个变量一次,但我们可以根据需要多次声明它。

该语句中缺少一个“显式”变量。不要只是发布一些你从某处抓到的短语。相关:谢谢你的评论。我不熟悉暂定定义的概念。这些链接真的很有帮助:那句话中缺少了一个“明确的”。不要只是发布一些你从某处抓到的短语。相关:谢谢你的评论。我不熟悉暂定定义的概念。这些链接非常有用:
int x;
int x=5;