值初始化聚合

时间:2011-06-22 07:45:20

标签: c++ value-initialization

尝试过C ++标准,但无法弄明白。这些是等价的吗?

double x[2] = {0.0, 0.0};

double x[2] = {};

这些怎么样?

struct A {
    double x[2];
};

A a = {0.0, 0.0};

A a = {};

谢谢!

2 个答案:

答案 0 :(得分:4)

C ++标准说(8.5.1):

  

如果初始化程序较少   列表中的成员比   聚合,然后每个成员不   明确初始化应为   值初始化

和double的值初始化是将其设置为0.0

是的!在C ++中它们是等价的。

[我没时间检查C99标准。]

答案 1 :(得分:3)

是的,他们是。

当每个声明的大小不足时,编译器用零填充初始化。