C-使用Union确定比特字段的开始

时间:2017-08-20 01:01:02

标签: c unions bit-fields

对于下面的例子,根据bits.b.a如何设置为bits.byte的值,它是否意味着它是位域的头部?我知道我的机器是小端的,所以不是说a是最不重要的位或最重要的位。还有更好的方法通过编码来确定位域的顺序吗?

struct bit_fields {
    unsigned int a:4,
                 b:8,
                 c:20;
}
union myUnion { 
    bit_fields b;
    uint8_t byte;
}
int main(void) {
    union myUnion bits;
    bits.byte=1;
    printf("%u, %u, %u\n", bits.b.a, bits.b.b, bits.b.c);
    return 0;
}


Output: 
1, (random int less than 2^8), (random int less than 2^20)

0 个答案:

没有答案