首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

位域中成员的部类有意义嘛

2013-08-10 
位域中成员的类型有意义嘛本帖最后由 wangdahu888 于 2013-08-05 17:54:32 编辑位域中的类型有意义嘛,既然

位域中成员的类型有意义嘛
本帖最后由 wangdahu888 于 2013-08-05 17:54:32 编辑 位域中的类型有意义嘛,既然都表示二进制位了,成员前面的类型,还有意义嘛
        struct   bs 

          { 

              int   a:8; 这里的int换成char,是不是也无所谓呀,求大神明辨!!! 

              int   b:2; 

              int   c:6; 

          }; 
C c struct
[解决办法]
有意义,
1是长度,char最大8bit,int32bit
2是字节对齐
[解决办法]
更有意义的是unsigned
[解决办法]
结合1,2楼。 
[解决办法]
意义不大,不过从严格的意义上来说,unsigned和类型可以限定符合和位数。
位域的应用并不广,还不如直接位运算来的方便和容易理解。

引用:
位域中的类型有意义嘛,既然都表示二进制位了,成员前面的类型,还有意义嘛
        struct   bs 

          { 

              int   a:8; 这里的int换成char,是不是也无所谓呀,求大神明辨!!! 

              int   b:2; 

              int   c:6; 

          }; 

[解决办法]

   struct   bs 

          { 

              int   a:8; //这里标识int 4个字节,32位 只占8位而已



              int   b:2; // 这里 表示值占 2位,

              int   c:6;  //6位
           //只要后面没有用完 32位的话, 整个结构体大小就只是4个字节大小而已!
          //全部换成char的话, char 8个字节, 结构体旧只占2个字节~

          }; 


[解决办法]

//结构体中有最大内部类型字节对齐的吧! 
//这里有int 和int对齐
struct RR
{
int type : 2;  
char data : 6;
};
struct RR
{
   char type :8;
   char type :2; 
  //这个结构体只占2个字节
}

[解决办法]
内核里用的多,应用里没必要节约这个。
[解决办法]
引用:
Quote: 引用:


   struct   bs 

          { 

              int   a:8; //这里标识int 4个字节,32位 只占8位而已

              int   b:2; // 这里 表示值占 2位,

              int   c:6;  //6位
           //只要后面没有用完 32位的话, 整个结构体大小就只是4个字节大小而已!
          //全部换成char的话, char 8个字节, 结构体旧只占2个字节~

          }; 

struct RR
{
int type : 2;
charc data : 6;
};
那为什么RR要占8个字节呢


这个是为了编译器寻址的时候方便,以空间换性能,也可以使用命令#pragma pack(1),让编译器以一个字节为存储边界,这样在内存中就是连续存储的了,RR就是5个字节了。关键字“内存对齐”你可以搜下~
[解决办法]
没有必要,除非做很底层的东西,否则真心觉得没有什么必要这么做

热点排行