读书人

帮忙分析一下解决思路

发布时间: 2012-02-23 22:01:34 作者: rapoo

帮忙分析一下
// 帮忙分析一下
#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.

读书人网 >C++

热点推荐