我在函数中声明了一个静态变量但未初始化.这个变量会自动初始化为零吗?
static int idx;
Run Code Online (Sandbox Code Playgroud)
小智 38
是的 - C标准ISO/IEC 9899:1999又名C99(和C++)标准说必须如此.有关确切文字,请参见WG14 N1256第6.7.8节("初始化")中的第10项.
正如其他人指出的那样,最好始终初始化静态变量:
static int idx = 0;
Run Code Online (Sandbox Code Playgroud)
这样做的原因并不是因为某些编译器可能并不总是将静态变量初始化为零(任何未能进行此类初始化的编译器都会被彻底破坏,并且不能声称是C或C++编译器),这是说什么你的意思 - 可能是最基本的编程规则.
小智 5
虽然标准说是的......良好的做法表明您应该始终初始化变量。您永远不知道何时更改编译器或必须在另一台机器上编译它,您希望最大限度地减少任何意外行为的可能性。