C++ {0}之间的差异&;结构的{0}}

C++ {0}之间的差异&;结构的{0}},c++,c,C++,C,可能重复: 对于以下结构 typedef struct matrix { float data[16]; } matrix; 有什么区别吗? matrix test1 = {0}; 及 在初始化结构的数据成员时。两者都将数据初始化为零 当C或C++时,有些见解是很棒的。< P>用矩阵TEST1= { 0 } /CODE >,您将用所有零初始化Test1,并用矩阵Test1= {{ 0 } < /代码>,您将初始化Test1.DATA。在本例中,所有零实际上都是相同的,因为您的结构中

可能重复:

对于以下结构

typedef struct matrix
{
    float data[16];
} matrix;
有什么区别吗?

matrix test1 = {0};

在初始化结构的数据成员时。两者都将数据初始化为零


当C或C++时,有些见解是很棒的。

< P>用<代码>矩阵TEST1= { 0 } /CODE >,您将用所有零初始化Test1,并用<代码>矩阵Test1= {{ 0 } < /代码>,您将初始化Test1.DATA。在本例中,所有零实际上都是相同的,因为您的结构中没有任何其他数据定义:)

使用
矩阵test1={0}
您将使用所有零初始化test1,使用
矩阵test1={0}
您将初始化test1.data。在这种情况下,所有的零实际上都是一样的,因为您的结构中没有任何其他数据定义:)

这意味着,如果我在结构中有另一个成员,那么使用{0}将不会将第二个变量初始化为零?但是,这并没有发生,不管我使用的是单还是双,都是用零初始化的!这意味着,如果我在结构中有另一个成员,那么使用{{0}}不会将第二个变量初始化为零?但是,这并没有发生,不管我使用的是单还是双,都是用零初始化的!C中没有部分初始化。对象要么根本没有初始化,要么完全初始化<代码>{0}将第一个成员显式初始化为0,并隐式初始化(为0)所有其他成员。C中没有部分初始化。对象要么根本没有初始化,要么完全初始化<代码>{0}将第一个成员显式初始化为0,并隐式初始化(为0)所有其他成员。
matrix test1 = { { 0 } };