#include <stdio.h>
#include <string.h>
/* 定义简单的结构 */
struct
{
unsigned int widthValidated;
unsigned int heightValidated;
} status1;
/* 定义位域结构 */
struct
{
unsigned int widthValidated : 16; //位域宽度16
unsigned int heightValidated : 16;//位域宽度16
} status2;
int main()
{
{
printf("Memory size occupied by status1 : %d\n", sizeof(status1));
printf("Memory size occupied by status2 : %d\n", sizeof(status2));
return 0;
}
}
int 占用4个字节, status1里面有2个int 则占用8字节。
为了节省内存空间占用,例如我仅仅用这个变量表示TRUE 或者 FALSE, 那么位域宽度设为1即可. 设置为1可以让int 只占用2字节
1表示的是二进制里面占一位, 如果设置16则是2进制的16位, int类型4字节占32位 所以位域宽度16还是占用2字节,当超过16并低于32 则会上升到4个字节
0b0e417dd9c59220fe047cf825c68e3.jpg
网友评论