为什么这个C代码不会抛出任何错误?

时间:2015-10-04 12:07:22

标签: 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; 
}

输出:5

Q1。在第1行中,x的第一个声明默认将全局变量x初始化为0。那为什么编译器不会抛出任何错误? 如果我将第1行和第2行重写为:

int x=10;
int x=20;

上述代码段会导致错误,例如重新定义&#39; x&#39;。我不能为以下内容得到相同的错误,因为默认情况下,x被初始化为0?

int x;
int x=5;

Q2。第1行和第2行都定义全局变量x。这个陈述是否正确?我已经读过,我们只能定义一次变量,但我们可以根据需要多次声明它。

0 个答案:

没有答案