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