c++ - 值初始化聚合

标签 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 = {};

谢谢!

最佳答案

C++ 标准说 (8.5.1):

If there are fewer initializers in the list than there are members in the aggregate, then each member not explicitly initialized shall be value-initialized

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

是的!在 C++ 中,它们是等效的。

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

关于c++ - 值初始化聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436554/

相关文章:

c++ - 用于 Mac 的 Eclipse C++ GDB 调试器

c++ - 使用 std::wstring 或 wchar_t 进行 Poco 日志记录

c++11 聚合初始化之前的值初始化

c++ - 获取默认初始化(非值/零初始化)的 POD 作为右值

c++ - 此应用程序启动失败,因为它找不到或加载 Qt 平台插件 "windows"

c++ - 文件末尾的空格导致 C++ 中的 EOF 检查失败

c++ - Visual Studio - 并行化构建不会提高性能

c++ - 在 C++ 中,指针类型数组的元素是否保证默认初始化为 nullptr?

c++ - 如何调用 clang++ 或 g++ 来准确复制两个不同标准版本中的需求