这是什么写法啊该怎么处理

这是什么写法啊
struct   A  
{
char   t:4;   //4位
char   k:4;   //4位
unsigned   short   i:8;   //8位   这里要偏移2字节保证4字节对齐  
unsigned   long   m;   //4个字节
};

------解决方案--------------------
定义一个结构体,然后就是每个元素占了多少位
------解决方案--------------------
char t:4
是位域
表示分给他的位数

------解决方案--------------------
当然有了。
现在的程序越来越人性话了。
------解决方案--------------------
不是在定义好了就自动分配空间了嘛,怎么还要规定占多少啊
------解决方案--------------------
不明白!
各种类型的位数难道不是固定的?
------解决方案--------------------
char t:4; //4位
char k:4; //4位
这里是把一个char型8个bit分成2份,一份让t占用,一份让k占用。
目的是为了节省空间,在嵌入式程序里很多这种结构体。

------解决方案--------------------
这种写法主要是节省存储空间,还用来做默写标志为操作时使用,当然一般来说速度比较快些。

------解决方案--------------------
规定自动分配多少位空间给他
例如char ch:8;就表示分配一个byte(8bit)的空间给ch 他可以表示2^8个字符
谭浩强《C程序设计第二版》的306页有详细介绍 称为位段