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

帮忙分析一下解决思路

2012-02-23 
帮忙分析一下// 帮忙分析一下#i ncludeiostream.h#i nclude string.h#i nclude malloc.h#i nclude

帮忙分析一下
// 帮忙分析一下
#i nclude<iostream.h>
#i nclude <string.h>
#i nclude <malloc.h>
#i nclude <stdio.h>
#i nclude <stdlib.h>
#i nclude <memory.h>
typedef struct AA
{
  int b1:5;
  int b2:2;
}AA;
void main()
{
  AA aa;
  char cc[100];
  strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
  memcpy(&aa,cc,sizeof(AA));
  cout << aa.b1 <<endl;
  cout << aa.b2 <<endl;
}

[解决办法]
拷贝之后aa内存放置30 31 32 33
结构体内部变量存放是内存高到低
b1,b2共占一个字节,30二进制表示0110 0000
所以b1是前5位,b2是接着的2位
刚好是-16和1
另外这和编译器有关的。
[解决办法]
先判断sizeof(AA)是4个字节,也就是把字符0,1,2,3拷给了aa。字符0的二进制是0011 0000。
低5位(10000)给b1,为-16,接着2位(01)给b2,为1.

热点排行