//author: hjjdebug
//date: 2024年 03月 29日 星期五 14:37:38 CST
//c语言bit位定义--位域的分配是怎样的? little-endian最先定义的在最低位
#include <stdio.h>
typedef struct {
unsigned int is_error : 1; // 到底在最高位还是最低位? 打印出来就明白了.
unsigned int : 29; // 29位不用
unsigned int is_read : 1;
unsigned int is_write : 1;
} status_t;
status_t status;
int main()
{
status.is_error=1;
status.is_read=1;
status.is_write=1;
printf("is_error:%d, is_read:%d, is_write:%d\n",status.is_error,status.is_read,status.is_write);
// 编译器认为, is_error,is_read,is_write bit位本身就是unsigned int,
// 跟外部包装它的unsigned int 没有半毛钱关系, 你认为有关系,它认为那是强加给它的,它不承认
// 所以它死活不让转 cannot convert ‘status_t’ to ‘unsigned int’ in initialization
// unsigned int n=status;
// &nbs