c - gcc 是否自动将静态变量初始化为零?

标签 c

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

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/

相关文章:

c - 传递结构以在 C 中用作参数

c - 动态分配结构体数组

c - makefile 和多次执行

c - 为什么 scanf 需要两个数字?

c - 这里是否需要将指针设置为 NULL 并清空 char 数组?

C语言: how memory alignment happened in the stack for array

c - while循环1的问题

java - 使用 C/C++ 或 Java 打开现金抽屉

java - 在 Java 应用程序中使用 C 源代码的最简单方法是什么?

c - 外部 C 代码无法从两阶段 x86 引导加载程序执行?