结构体中的 位域操作

  • Post author:
  • Post category:其他


#include <iostream>
using namespace std;

typedef unsigned char u_char;
struct tagControl
{
    u_char fc_subtype : 4;
    u_char fc_type : 2;
    u_char fc_protocol_version : 2;
    u_char fc_order : 1;
    u_char fc_wep : 1;
    u_char fc_more_data : 1;
    u_char fc_pwr_mgt : 1;
    u_char fc_retry : 1;
    u_char fc_more_frag : 1;
    u_char fc_from_ds : 1;
    u_char fc_to_ds : 1;
};

int main()
{
    cout << "sizeof(tagControl) = " <<sizeof(tagControl)<< endl;
    return 0;
}

/*
Output:

sizeof(tagControl) = 2
*/

如上,是位域操作的表示方法,也就是说后面加上“:1”的意思是这个成员的大小占所定义类型的1 bit,“:2”占2 bit,依次类推。当然大小不能超过所定义类型包含的总bit数。

一个bytes(字节)是8 bit(bit)。例如你的结构中定义的类型是u_char,一个字节,



版权声明:本文为zhu2695原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。