简单来说,全局变量是在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);
}
生成正确的结果,并警告数据定义没有类型或存储类。我对全局变量感到困惑。
答案 0 :(得分:2)
该行
a=b=1;
是语句,在全局范围内,您不能只有语句,只能声明和定义。
当你这样做时
a=1;
您隐式将变量a
定义为int
,然后将初始化为值1
。这只能在全球范围内完成,但不要这样做,因为它会引起很多混乱。