对于下面的例子,根据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)