3

尝试了 C++ 标准,但无法弄清楚。这些是等价的吗?

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

double x[2] = {};

这些怎么样?

struct A {
    double x[2];
};

A a = {0.0, 0.0};

A a = {};

谢谢!

4

2 回答 2

4

C++ 标准说(8.5.1):

如果列表中的初始化器少于聚合中的成员,则每个未显式初始化的成员都应进行值初始化

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

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

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

于 2011-06-22T07:50:47.637 回答
3

是的,他们是。

当每个声明的大小没有足够的给定值时,编译器用零填充初始化。

于 2011-06-22T07:49:53.753 回答