位域成员变量详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位域成员变量详解相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string>
#include <string.h>
#include <stdio.h>
#include <malloc.h>
#include "list.h"

using namespace std;

/*
 位域成员变量:
该种形式只能出现于结构体或共用体的定义中,是位域定义的标准形式。
其使用方式为
struct name
{
    type var_name : n;
};
含义为,在结构体name汇总,成员变量var_name占用空间为n位。
n为正整数,其值必须小于type类型占用的位数。比如type如果是int,
占4字节32位,那么n必须是-16~15之间的整数。

注意:
    1. type只能为int、unsigne int这2种类型
    2. 不能在结构体共用体外定义位域变量
 */
typedef struct
{
  int num:4;   //指定num所占空间为16位,即2字节
}A;

int main(void)
{
    A   a;

    a.num=7;
    cout << a.num << endl;  //7
    a.num++;
    cout << a.num << endl;  //注意为: -8
    a.num++;
    cout << a.num << endl;  //-7

    cout << "------" << endl;
    a.num=8;    //超过-8~7的范围,则置为8
    cout << a.num << endl;  //-8
    a.num++;
    cout << a.num << endl;  //-7
    a.num++;
    cout << a.num << endl;  //-6
}

 

以上是关于位域成员变量详解的主要内容,如果未能解决你的问题,请参考以下文章

数据结构 -- 位域

C位域操作

位域与位运算

C言语位域

C语言结构体在定义的时候,各成员后面加冒号是啥意思?

C语言union和位域