从2014年11月的C ++ 14标准工作草案开始:
§1.76
c ISO / IEC N4296 5 [示例:声明为
的结构
struct {
char a;
int b:5,
c:11,
:0,
d:8;
struct {int ee:8;} e;
}
包含四个单独的 存储位置:字段a和位字段d和e.ee各自 单独的内存位置,可以在没有的情况下同时修改 相互干扰。位域b和c在一起 构成第四个记忆位置。位域b和c不能 同时修改,但b和a,例如,可以。 - 结束 例子]
我认为:0
充当了排序的分隔符,这就是d
具有单独的内存位置而b
和c
没有的原因。但是,我不明白
一起构成第四个存储位置
b
和c
是union
吗?例如,相当于
union {
int b:5;
int c:11;
};
答案 0 :(得分:1)
不,他们不会像在union
示例中那样分享任何内容。
为了考虑记忆位置,它们只被视为一个单位。
换句话说,以下是您示例中的位(可能)
AAAAAAAA BBBBBCCCCCCCCCCC DDDDDDDD EEEEEEEE (ee sharing e)
这些空格用于显示内存位置,不占用内存中的任何空间。