我见过一些看起来像这样的旧代码:char foo[100] = { 0 };
. 结构也会发生类似的事情,例如:STRUCT st = { 0 };
. 这两种情况的意图都很明确,即对各自的变量进行零初始化。因此,char foo[100] {};
并且STRUCT st {};
会更惯用。
我的问题是:应该<variable> = { 0 }
期望代码达到相同的结果吗?我已经使用发布构建二进制文件对此进行了测试,并且元素似乎是零初始化的,但这是否由标准保证?在我看来,<variable> = { 0 }
应该只保证变量的第一个元素(数组元素或结构成员)为零。
char foo[100] = {};
此外,类似的声明和指示的行为是什么STRUCT st = {}
?
(这个问题背后的动机是我会将所有声明更改为惯用形式,但如果不能保证零初始化,那么问题会更严重,值得一试。)