C语言union和位域
2021-04-15 本文已影响0人
init123
举例
union:
union {
int a;
char b;
short c;
}un;
位域:
struct bitDomain{
int a:10;
char b:2;
int c:22;
}
内存占用
union:占用字节数最大的数据类型为union的字节宽度,如上un的占用4字节。
位域:在内存对齐的基础上,各成员的宽度之和,如上bitDomain占用8字节。
位域其他
struct bitDomain{
int a:10;
int b;
int c:22;
}
如上成员b没有标明位数,说明占用原始类型的宽度,此位域占用12字节。
位域赋值超出的时候会被截断。
详细介绍
http://c.biancheng.net/cpp/html/2932.html
http://c.biancheng.net/view/2037.html