【问题标题】:global definition of a variable in CC中变量的全局定义
【发布时间】:2016-03-27 09:05:26
【问题描述】:

简单来说,全局变量是在 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);

}

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

【问题讨论】:

  • 最后一个警告是因为你的主函数没有返回类型。
  • @Vimal:这完全是错误的。
  • 我用返回类型和没有返回类型运行该代码。当然你需要为全局变量声明数据类型。

标签: c global-variables


【解决方案1】:

线

a=b=1;

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

当你这样做时

a=1;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多