gcc会自动初始化静态variables为零吗?

我有一个静态variables声明,但在一个函数中未初始化。 这个variables是否会自动初始化为零?

static int idx; 

是的–C标准ISO / IEC 9899:1999也就是C99 (和C ++)标准说这一定是这样的。 请参阅WG14 N1256的第6.7.8节(“初始化”)中的第10项以获取确切的文字。

正如其他人所指出的那样,总是初始化静态variables是一个好习惯:

 static int idx = 0; 

这样做的原因并不是因为某些编译器可能不总是将静态variables初始化为零(任何编译器如果没有做这样的初始化操作将会终止,并且不能声称是C或C ++编译器),那就是说什么你的意思 – 可能是最基本的编程规则。

虽然标准是肯定的…良好的做法表明,你应该始终初始化variables。 你永远不知道什么时候你改变编译器,或者不得不在另一台机器上编译它,你想尽量减less意外行为的可能性。