C语言中变量的全局定义

C语言中变量的全局定义,c,global-variables,C,Global Variables,简单来说,全局变量是在main()之外声明或定义的变量,其作用域从定义点到程序结束 我有几个关于全局变量的问题。我正在使用GCC编译器 #include<stdio.h> int a,b; a=b=1; main() { printf("%d\n%d",a,b); } #包括 INTA,b; a=b=1; main() { printf(“%d\n%d”,a,b); } 此程序在运行时生成错误 #include<stdio.h> int a,b; main

简单来说,全局变量是在main()之外声明或定义的变量,其作用域从定义点到程序结束

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

#include<stdio.h>
int a,b;
a=b=1;
main()
{
     printf("%d\n%d",a,b);
}
#包括
INTA,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);
}
#包括
INTA,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);

}
#包括
a=1;
b=9;
c='c';
h='h';
main()
{
printf(“%d\n%d\n”,a,b);
printf(“%c\t%c\n”,c,h);
}
生成正确的结果,并警告数据定义没有类型或存储类。我完全搞不懂全局变量

线路

a=b=1;
是一个语句,在全局范围内不能有语句,只能有声明和定义

当你这样做的时候

a=1;

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

在最后一个例子中,它的一个警告bcoz-ur-main函数没有返回类型。@Vimal:这完全是错误的。我运行了带有返回类型和不带返回类型的代码。。当然,您需要声明全局变量的数据类型。