回覆列表
  • 1 # 你永遠追不上的巨人

    是這樣的,這裡是關於結構體位域的問題。定義了三個型別為unsigned的位域名a,b,c,長度分別是2bit,3bit,4bit。然後 data.a =

    1; data.b =

    2; data.c =

    3;這裡給它們分別賦值。在32-bit系統下,unsigned是佔4個位元組,共32位。a佔2位,1賦值給它,就是0000 0000 0000 0000 0000 0000 0000 0001b佔3位,2賦值給它,就是0000 0000 0000 0000 0000 0000 0000 1001c佔4位,3賦值給它,就是0000 0000 0000 0000 0000 0000 0110 1001而data.i=0;因為i是int型,佔4個位元組,是上面說的4個位元組後的下一個4位元組。賦值為0.最後看printf("%d\n", data); 這句是列印data的首地址值,即結構體unsigned型別為域對應的4個位元組的值。所以根據上面解釋的 ,現在就很明顯了。值就是3個為域分別賦值之後的最終值,即:0000 0000 0000 0000 0000 0000 0110 1001轉16進位制就是:0x00000069 即0x69。 十進位制就是105.希望對你有幫助。

  • 中秋節和大豐收的關聯?
  • 辦公室用塑膠地板怎麼樣塑膠地板該怎麼施工?