C/C++位结构体

一、位结构体:也叫位域结构体等等
a)位结构体:每个成员都可以用来做定义单位,可以小于1个字节或者半个字节。
普通变量没有小于1BYTE的单位。最小的类型char和bool都是1byte.
b)定义:
struct 结构体名
{
成员类型 成员变量名:位段(常量)
成员类型 成员变量名:位段(常量)
};
 
例如:使用4个字节表示年月日
d)位结构体定义时尽量所有成员使用相同类型。
e)成员类型必须满足最大成员的位数,例如:char 只能定义8位以内位段。
 
二、位域的特点:
a)位结构体的每个成员叫做位域,位域不能取地址。
b)如果位域是有符号整数,每个位域的最高位都是符号位

#include <stdio.h>
//struct SData
//{
//	unsigned char c1 : 3; //0-7
//	unsigned char c2 : 4;
//	unsigned char c3 : 1;
//
//};
struct SData {
	char c1 : 3;//取值范围:-4...-1 3
	char c2 : 4;//取值范围:-8 ... -1 0  7
	char c3 : 1;//取值范围:-1和0两种
};
int main()
{
	printf("sizeof(SData)=%d\n", sizeof(SData));

	SData d;
	d.c1 = 8;
	d.c2 = 7;
	d.c2++;
	d.c3 = 7;

	//printf("c3的指针:0x%p\n", &d.c3);
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值