【发布时间】:2014-10-04 18:03:29
【问题描述】:
为什么我们只允许在全局部分声明和定义变量?为什么不能在全局部分包含赋值? 示例:
#include<stdio.h>
int a;
a=5;//Valid because its similar to int a=5; Therefore a initialiser to a Tentative definition
a=8;//Invalid because We can have only one initialiser for a tentative definition
void main(){
...
}
我们为什么需要这个?如果我们被允许对一个暂定定义有多个初始化器会产生什么后果
我的下一个问题是为什么只允许使用常量初始化元素?
#include<stdio.h>
int i=5;
int j=i+5;//[Error] initializer element is not constant
void main(){
...
}
同样,如果不存在此规则,我们将面临什么后果?
请注意我的问题不完全是为什么会发生这种情况?我试图弄清楚为什么首先给出这些限制。
【问题讨论】:
-
全局区域(函数之间的空间)没有被执行。只有函数被执行。函数之间的全局区域用于告诉编译器为什么目的留出哪些内存。
-
不仅仅是作业。文件范围内不允许声明,只能声明。
-
这意味着什么?该代码何时执行,以什么顺序执行?
-
@delnan 我会用更好的语法改变它
-
您询问的是哪种语言?第二个例子是完美的 C++;只有 C 需要全局变量的常量初始化器。
标签: c global-variables