首先看看位段的作用:位段是在字段的声明后面加一个冒号以及一个表示字段位长的整数来实现的。这种用法又被就叫作“深入逻辑元件的编程”。
几个关于位段的注意点:1、位段的成员类型只有三种类型:int ,unsigned int ,signed int。位段,它是用来表示字段位长(bit)的,它只有整型值。至于能不能取负数,是由编译器决定的。2、成员名后面的一个冒号和一个整数,这个整数指定该位段的位长(bit);3、许多编译器把位段成员的字长限制在一个int的长度范围之内;4、位段成员在内存的实现是从左到右还是从右到左是由编译器来决定的。
下面我们就来看看,它到底是什么东西(我先假定大家的机器字长为32位):
Struct WORD
{
unsigned int chara : 6:
unsigned int font : 7;
unsigned int maxsize : 19;
};
Struct WORD chone;
它最多可以容纳64(既我说的unsigned int chara :6; 它总共是6位)个不同的字符值,可以处理128(既unsigned int font : 7 ;既2的7次方)种不同的字体,和2的19次方的单位长度的字。maxsize是19位,它是无法被一个short int 类型的值所容纳的,其余的成员的长度比char还小,如果让他们共享32位机器字长,这就避免用一个32位的整数来表示maxsize的位段。
用位段的理由:
点评:使用位段只是基于方便的目的,任何可以用位段实现的任务都可以使用移位和屏蔽来实现。