Kau*_*wal 3 c++ struct sizeof unions
我在结构中声明了联合数据类型(但有两种不同的语法)。对于结构的大小,我得到不同的输出。这里有什么收获?
union u {
double x;
int y;
};
union {
double x;
int y;
} u_1;
struct s1 {
int a;
union {
int b;
double c;
};
};
struct s2 {
int a;
union u{
int b;
double c;
};
};
int main()
{
u u1;
s1 s_1;
s2 s_2;
cout<< sizeof(u1)<< " "<<sizeof(u_1)<<" " <<sizeof(s_1)<<" " <<sizeof(s_2);
}
Run Code Online (Sandbox Code Playgroud)
我期望输出:8 8 16 16但实际输出是8 8 16 4。
s2声明工会,但不成为工会的成员。
s1正在使用“匿名联合”语义:(来自https://en.cppreference.com/w/cpp/language/union)
匿名联合的成员被注入到封闭范围内(并且不得与在此声明的其他名称冲突)。