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