C中变量的全局定义

时间:2016-03-27 09:05:26

标签: c global-variables

简单来说,全局变量是在main()之外声明或定义的变量,并且具有从定义点到程序结尾的范围。

我对全局变量有几个问题。我正在使用GCC编译器。

#include<stdio.h>
int a,b;
a=b=1;
main()
{
     printf("%d\n%d",a,b);
}

此程序在

时生成错误
#include<stdio.h>
int a,b;

main()
{
     a=b=1;
     printf("%d\n%d",a,b);
}

生成正确的输出。为什么在全局使用时不支持a = b = 1?

我还有一个问题要问。

#include<stdio.h>
a=1;
b=9;
c='c';
h='h';

main()
{
    printf("%d\n%d\n",a,b);
    printf("%c\t%c\n",c,h);

}

生成正确的结果,并警告数据定义没有类型或存储类。我对全局变量感到困惑。

1 个答案:

答案 0 :(得分:2)

该行

a=b=1;

语句,在全局范围内,您不能只有语句,只能声明和定义。

当你这样做时

a=1;

您隐式将变量a定义为int,然后初始化为值1。这只能在全球范围内完成,但不要这样做,因为它会引起很多混乱。