位段

可以用结构来实现位段(bit field),位段的声明和结构体类似,但他的成员是一个或多个位的字段(以位为单位),这些可能不同位数的字段成员可以存储于一个或多个整型变量中。

struct CHAR{
unsigned ch      : 7;    //成员的类型只能是int、signed int、unsigned int
unsigned font    : 6;     //成员后面是一个冒号和一个整数,该整数指定该成员所占位数
unsigned size    : 19;
};
struct CHAR ch1;

位段能实现的任务都能通过移位和屏蔽来实现,但位段的源代码明显比后者简单很多,但是,位段的可移植性较差,可移植的程序应尽量避免使用位段。原因在于:

①若位段使用int声明成员,则该成员究竟被译成有符号还是无符号是由编译器决定的;

②位段成员的长度一般都会限制在一个整型值内,所以一个在32位机器上声明并运行的程序可能无法在16位机器上使用;

③位段成员在内存中是从左向右分配还是从右向左分配也具有较强的机器依赖性;

 

posted @ 2017-02-21 15:28  zhengmengen  阅读(207)  评论(0)    收藏  举报