- 論壇徽章:
- 0
|
原帖由 skyguide 于 2009-10-9 22:44 發(fā)表 ![]()
那下面這個程序輸出什么呢
unsigned char puc[4];
struct tag
{
unsigned char ucP;
unsigned char ucD0:1;
unsigned char ucD1:2;
unsigned char ucD2:3;
}*pst;
int main()
{
pst=(struct tag*)puc;
memset(puc,0,4);
pst->ucP=1;
pst->ucD0=2; // ucD0就一位, 即只能賦值0或1,你賦值2編譯器應(yīng)該報錯的吧~~
pst->ucD1=3; // 3 == 11
pst->ucD2=4; // 4 == 100
printf("%02x,%02x,%02x,%02x\n",puc[0],puc[1],puc[2],puc[3]);
return 0;
}
假如
pst->ucD0=1; // 1
pst->ucD1=3; //11
pst->ucD2=4; //100
依次把各位填充,第2個字節(jié):[b7][b6][b5][b4][b3][b2][b1][b0]
ucD0填充b0, ucD1填充b1,b2,ucD2填充b3,b4,b5 --> [0][0] [1][0][0][1][1][1]
那該字節(jié)即 00100111對應(yīng)的%02x就是27 |
|