gcc会自动将静态变量初始化为零吗?

时间:2009-08-18 15:50:45

标签: c

我在函数中声明了一个静态变量但未初始化。这个变量会自动初始化为零吗?

static int idx;

2 个答案:

答案 0 :(得分:37)

是的 - C标准ISO/IEC 9899:1999 a.k.a. C99(和C ++)标准说这必须如此。有关确切文本,请参阅WG14 N1256的第6.7.8节(“初始化”)中的第10项。

正如其他人所指出的,最好始终初始化静态变量:

static int idx = 0;

这样做的原因并不是因为某些编译器可能并不总是将静态变量初始化为零(任何未能进行此类初始化的编译器都会被彻底破坏,并且不能声称是C或C ++编译器),它是说出你的意思 - 可能是最基本的编程规则。

答案 1 :(得分:4)

虽然标准说是......好的做法表明你应该始终初始化变量。您永远不知道何时更改编译器,或者必须在另一台机器上编译它,您希望最大限度地减少任何意外行为的可能性。