一个关于位段的问题?
关于位段我一直都有几个问题哪位高手可以帮忙解释下:
1:位段成员不是只有int,unsigned int两种类型吗?为什么我在有的程序里面看到
unsigned short型和unsigned char型.如:unsigned char mode:1;用的还挺正常,为什么?
2:位段成员的空间问题,比如:
typedef struct
{
unsigned int mode: 5;
unsigned int brightness:9;
unsigned int contrast: 15;
unsigned int color: 5;
}color_adjust_t;
有书上说:当一个字节未占满,而当前字节中剩下的空间又不够下一个位段成员
则会从下一个字节开始存放下一个位段成员.按照他的意思,位段的空间开辟是
以字节为单位的.那么上面的空间应该是6个字节.但是我在VC上实验却是8
个字节.是不是他是以四个字节为单位开辟空间的?即当前四个字节空间不够用
才再开辟4个字节的空间?还是开辟多大的空间跟位段的类型有关?
3:有的书上说位段的长度要不要超过8位跟编译器有关,可我一直都见过超过8位的位段,如上.用的不挺好?