原帖由 ubuntuer 于 2009-10-8 23:44 發(fā)表
你這個不論是大端還是小端
ucD0都是占用一個字節(jié)中的第一個bit位!!!
大小端是對字節(jié)而言的,不是bit
原帖由 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()
{
ps ...
原帖由 ubuntuer 于 2009-10-8 23:44 發(fā)表
你這個不論是大端還是小端
ucD0都是占用一個字節(jié)中的第一個bit位!!!
大小端是對字節(jié)而言的,不是bit
原帖由 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;
}
歡迎光臨 Chinaunix (http://72891.cn/) | Powered by Discuz! X3.2 |