【问题标题】:Value initialize aggregate值初始化聚合
【发布时间】:2011-06-22 07:45:20
【问题描述】:

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

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

double x[2] = {};

这些怎么样?

struct A {
    double x[2];
};

A a = {0.0, 0.0};

A a = {};

谢谢!

【问题讨论】:

  • C 还是 C++?你已经用这两个标记了这个问题。
  • 应该是A a = { {0.0, 0.0} };

标签: c++ value-initialization


【解决方案1】:

C++ 标准说 (8.5.1):

如果在 列表中的成员数量超过 聚合,那么每个成员不 显式初始化应为 值初始化

双精度值的初始化是将其设置为0.0

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

[我还没来得及检查 C99 标准。]

【讨论】:

    【解决方案2】:

    是的,他们是。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2017-07-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多