VC++ 里面的一道C语言问题
如题, 小弟想理解一下结构体中的位的操作,想知道,在一个整型的变量中,a b c 的分布,以及其他位的情况,还有想知道是不是第一个变量a:3的地址是不是ND的首地址, a b c 是不是在内存中连续分布的,地址相差是不是3位,以及,在当前首地址起后八位的数据是不是a b c 的内存值左移一位?
通过vc++6.0打印出来的结果,发现,和期望值相差很大..求前辈指教!!
#include <stdio.h>
#include <string.h>
typedef struct node
{
unsigned int a:3;
unsigned int b:3;
unsigned int c:3;
} ND;
int main(void)
{
ND Myval;
printf("%d\n",sizeof(short));
memset(&Myval, 0 , sizeof(ND));
printf("%x %x %x\n",&Myval,&Myval +3,&Myval +2);
printf("%d %d %d %d \n",Myval.a,Myval.b,Myval.c,*(unsigned int*)(&Myval));
Myval.a = 6;
Myval.b = 6;
Myval.c = 2;
printf("%d %d %d %d \n",Myval.a,Myval.b,Myval.c,*(unsigned int*)(&Myval));
printf("%d\n",*(((unsigned char*)(&Myval))-1));
return 0;
}
2
12ff7c 12ff88 12ff84
0 0 0 0
6 6 2 182
204
Press any key to continue
[解决办法]
推荐楼主看看http://www.rosoo.net/a/201006/9581.html