用了好几个编译器,结果都是33 9 54 24.
应该就像下面答案用反汇编看的,位域和一般结构体成员在内存中分布不同,会自动按照当前字节序排列而导致错误。
直接把两个结构体改为d, c, b, a的顺序就对了。
位域这个东西是依赖于实现的,一般情况下都不怎么推荐用。
你这个问题在StackOverflow有人回答过了。