c - 全局变量总是用零初始化吗?

标签 c standards

我可以相信这个吗:

Section 6.7.8p10 Initialization of C standard

它会一直设置为 0 吗?此规则是否存在异常(exception)情况(可能是特定于编译器的异常(exception)情况)?

最佳答案

是的,如果编译器是 C 编译器,则所有未初始化的静态变量都将被初始化,就像 { 0 } 一样。这意味着即使位模式不同, float 和指针也将如同由 { 0 } 初始化一样。

如果编译器有一个选项使其成为非 C 编译器,那么所有的赌注都会落空。

关于c - 全局变量总是用零初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52948669/

相关文章:

c++ - 64 位整数到双碰撞

c++ - getopt 参数取决于另一个

c - 为什么 fprintf() 不写入文件?

unix - 实现 ls' -v 标志的可移植方法(即按版本排序)?

html - 应该为公共(public)网站选择哪个 HTML 版本

html - meta 标签应该是 HTML 编码的吗?

c - 最低位索引

c - 分解位模式、移位并创建新模式

testing - OpenID 提供商的合规性测试

c++ - C++ 标准为缩小从 double 到 int 的转换提供了哪些保证?