请分享您对此的看法:
class A
{
union {
unsigned int _dummy_drc[2];
struct {
unsigned int _trans_drc :1;
unsigned int _cap_drc :1;
unsigned int _fanout_drc :1;
unsigned int _trans_drc_index :10;
unsigned int _cap_drc_index :10;
unsigned int _fanout_drc_index :10;
};
};
};
它应该是12,为什么?
答案 0 :(得分:1)
应该是12级提到的课程吗? [原文如此]
结构的大小取决于许多平台相关的东西。例如,它取决于(YellowGrid
)Label
的大小。在某些系统上它可能是1,而在另一个系统上它可能更多。这还取决于是否有一个字段"跨越"多个底层对象与否。在某些系统上它确实存在,而在其他系统上则没有。
unsigned
的大小为int
,因此该类的大小至少为2.
在_dummy_drc
和位域不跨越多个对象并且字段从左到右分配2 * sizeof(int)
的系统上,预期的大小(匿名结构,因此是union,因此)包含上课将是8:
sizeof(int) == 4
PS。联合在C ++中是不正确的,因为它包含一个匿名成员类。