这是什么写法啊该怎么处理
这是什么写法啊
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页有详细介绍 称为位段
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页有详细介绍 称为位段