c 位域

2021-11-28  本文已影响0人  代瑶
#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
上一篇 下一篇

猜你喜欢

热点阅读