我在函数中声明了一个静态变量但未初始化。这个变量会自动初始化为零吗?
static int idx;
最佳答案
是 - C 标准 ISO/IEC 9899:1999又名 C99 (和 C++)标准说必须如此。参见 WG14 N1256 的第 6.7.8 节(“初始化”)中的第 10 项获取确切的文本。
正如其他人所指出的,始终初始化静态变量是一种很好的做法:
static int idx = 0;
这样做的原因并不是因为某些编译器可能并不总是将静态变量初始化为零(任何未能进行此类初始化的编译器将最终被破坏,并且不能声称是 C 或 C++ 编译器),它是说出你的意思 - 可能是最基本的编程规则。
关于c - gcc 是否自动将静态变量初始化为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1294772/