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

结构体(类)成员位赋值,有什么需要特殊注意的吗?解决办法

2012-03-31 
结构体(类)成员位赋值,有什么需要特殊注意的吗?问题是这样的(举例如下,sizeof(int) 32):class A{public:

结构体(类)成员位赋值,有什么需要特殊注意的吗?
问题是这样的(举例如下,sizeof(int) = 32):
class A 
{
public:
  A();
public:
  int a:4;
  int b:3;
  int c:1;
  int d:3;
  int e:5;
  int f:5;
  int g:3;
  int h:6;
  int i:2;
   
  ...
  ...
  
};

A::A()
{
...//初始化;
}

//后面的某处,对这些成员赋值
A aTest;
aTest.a = 3;
aTest.b = 1;
aTest.c = 2;
aTest.d = 5;
....
....

结果我在使用这些成员的值的时候,发现有些值变成负数了,比如这里的aTest.d 当时赋值的时候是5,结果最后变成了-3.
按道理说5用3位足以存储,不知道是什么原因。

求指点,谢谢

[解决办法]
最高bit位按符号位处理了
如果你只存正数的话可以使用
问题是这样的(举例如下,sizeof(int) = 32):
class A
{
public:
A();
public:
unsigned int a:4;
unsigned int b:3;
unsigned int c:1;
unsigned int d:3;
unsigned int e:5;
unsigned int f:5;
unsigned int g:3;
unsigned int h:6;
unsigned int i:2;
.....
 

热点排行