1、struct s1
{
int i:8;
int j:4;
int a:3;
double b;
}
sizeof(s1)=16
2、
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<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;
}
首先sizeof(AA)的大小为4,b1和b2分别占5bit和2bit。经过strcpy和memcpt后,aa的4个字节所存放的值是:
0,1,2,3的ASCII码,即00110000,00110001,00110010,00110011
所以,最后一步:显示的是这4个字节的前5位,和之后的2为:分别是10000,和01
因为int有正负之分,故答案是-16和1