当前位置: 代码迷 >> C语言 >> 求教一个结构位域的问题
  详细解决方案

求教一个结构位域的问题

热度:289   发布时间:2008-04-21 20:45:52.0
求教一个结构位域的问题
请问有这样一个结构定义
typedef struct
{
  int spart:10;
  int i:1;
  int j:1;
  int k:1;
  int Reserved :3;
}CODE;

int num;
CODE *pCode = (CODE*)&(INT_NUM);

我想得到i,j,k中为1的个数(如,i,j,k都为1,num应该等于3)
,可不可以用下面的方法实现。谢谢!
for(i=0;i<3;i++)
if((INT_NUM >>(10+i)) & 0x01)
{
  num++;//i,j,k为1的个数
}
搜索更多相关的解决方案: int  位域  结构  num  

----------------解决方案--------------------------------------------------------
INT_NUM是宏吗?没有定义
----------------解决方案--------------------------------------------------------
INT_NUM是一个整形变量
int INT_NUM;
----------------解决方案--------------------------------------------------------
貌似不可以,因为C里面没有规定位段具体怎么排,所以至少x86和sparc上结果就不同。

所以我看不如直接
num=pCode->i+pCode->j+pCode->k;

[[it] 本帖最后由 forever74 于 2008-4-23 01:18 编辑 [/it]]
----------------解决方案--------------------------------------------------------
typedef struct
{
    int spart:10;
    int i:1;
    int j:1;
    int k:1;
    int Reserved :3;
}CODE;

int num;
CODE *pCode = (CODE*)&(INT_NUM);

不同机器结果不同

[color=white]
----------------解决方案--------------------------------------------------------
  相关解决方案