c语言bit位定义--位域的分配是怎样的?

//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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值