Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个联盟意味着什么?c++;_C++_Unions - Fatal编程技术网

C++ 这个联盟意味着什么?c++;

C++ 这个联盟意味着什么?c++;,c++,unions,C++,Unions,所以我得到了这样一个联盟: union A { struct{ SomeType B; }b; struct{ SomeType C; }c; }a[2]; a[2]是什么意思?a[2]声明了一个变量,a,这是一个a类型的数组,大小为2它是a类型的一个名为a大小为2的数组,它是一个联合体。这对于所有类类型都是相同的 这将是一样的 union A { struct{ SomeType B; }b;

所以我得到了这样一个联盟:

union A
{
    struct{
        SomeType B;
    }b;
    struct{
        SomeType C;
    }c;
}a[2];

a[2]是什么意思?

a[2]声明了一个变量,
a
,这是一个
a
类型的数组,大小为
2
它是
a
类型的一个名为
a
大小为2的数组,它是一个
联合体。这对于所有类类型都是相同的

这将是一样的

union A
{
    struct{
        SomeType B;
    }b;
    struct{
        SomeType C;
    }c;
};

A a[2];
本声明

union A
{
    struct{
        SomeType B
    }b;
    struct{
        SomeType C
    }c;
}a[2];
实际上相当于以下两个声明

union A
{
    struct{
        SomeType B
    }b;
    struct{
        SomeType C
    }c;
};

A a[2];

也就是说,
a
是一个由两个元素组成的数组,类型为
union a

内部anon。结构看起来格式不正确。
B
C
之后不应该有分号吗?请注意,从类型的角度来看,类和结构之间没有区别。能否在结构的成员之后添加分号?我已经为同样的问题提交了编辑。@MarcusMüller我修正了措辞。这更好吗?@NathanOliver我一开始并不认为这是错的,只是想确保读者不会认为在哪里可以使用
struct
class
,所以[0]可以是b,而[1]可以是c?或者如果a[0]是b,a[1]也应该是b?