可能重复:
这个自初始化是否有效?
这是一个定义明确的 C/C++ 程序吗?
int foo = foo;
int main()
{
}
会foo
被零初始化,还是未定义的行为?
这是一个格式错误的 C 程序。在 C 中,具有静态存储持续时间的对象的初始化程序必须是常量表达式。foo
右侧的 不是常量表达式。
在 C++ 中,由于对象的零初始化具有静态存储持续时间(这发生在任何其他初始化之前),因此它是格式良好的并且具有定义的行为。
它甚至不能在 C 中编译。除了使用编译时常量之外,您不能初始化全局变量。
静态/全局变量初始化为 0。因此:
int ThisIsZero;
int main(void)
{
static int AndSoIsThis;
int ButThisIsNotInitialized;
...
};
那不编译 - 问题的重点是什么?