标志位结构体定义

如下:
1、跟定义一个结构体类似,只是在成员后面添加一个位域宽度,
2、注意位域宽度别超过前面类型的宽度。
3、结构体元素可以不同类型。
4、结构体所占内存以最大类型宽度为单位
5、如果储存的数据长度大于定义宽度,会溢出,只保留定义宽度范围内的数据。 
6、可以在中间空几个位域。

#include <stdio.h>
 
typedef struct{
   unsigned char f1 : 1;
   unsigned char f2 : 1;
   unsigned char    : 1;
   unsigned char f3 : 4;
   unsigned short int f4 : 16;
}Bit_Flag;
 
int main() {
   Bit_Flag pack;
   
   int* pac;
   
   pack.f1 = 0;
   pack.f2 = 1;
   pack.f3 = 0xff;
   pack.f4 = 0xaaaa;
   
   pac = &pack;
   printf("f1: %x\n", pack.f1);
   printf("f2: %x\n", pack.f2);
   printf("f3: %x\n", pack.f3);
   printf("f4: %x\n", pack.f4);
   printf("pac: %x\n", *pac);
   printf( "Memory size occupied by Bit_Flag : %d\n", sizeof(Bit_Flag));
   return 0;
}

f1: 0
f2: 1
f3: f
f4: aaaa
pac: aaaa007a
Memory size occupied by Bit_Flag : 4

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值