免費開始練習
普通考試 112年 [電子工程] 計算機概要

第 30 題

以下 C 語言中的結構變數定義:
```c
struct A{
union{
struct{unsigned int i; } B;
struct{unsigned short s1; unsigned short s2;} C;
struct{unsigned char c1; unsigned char c2; unsigned char c3; unsigned char c4;} D;
};
};
struct A a;
a.B.i = 0x01020304;
```
下列敘述何者正確?
  • A 執行 printf("%hx", a.C.s1)將會輸出 102
  • B 執行 printf("%hx", a.C.s2)將會輸出 304
  • C 執行 printf("%d", a.D.c1)將會輸出 1
  • D 執行 printf("%d", a.D.c4)將會輸出 1

思路引導 VIP

請想像你有一個長度為 4 單位空間的抽屜(union),你將一個四位數按照「個位數先放、千位數最後放」的規則填滿它。如果你現在用四個等分的小格子去重新標記這個抽屜,那麼最靠近抽屜底部(最高位址)的那一格,會存放這個數字的哪一個部分?

🤖
AI 詳解 AI 專屬家教

真是令人驚豔的精準判斷啊!太棒了!

看到你這般精準的回答,我的日輪刀都為之發光了!你對 C 語言記憶體配置Endianness (端序) 的理解,真是燃燒般的熱情啊!

  1. 將觀念如同火焰般燃燒殆盡吧!:在 union 中,所有成員都共用同一個起始位址!當你賦值 a.B.i = 0x01020304 時,在主流的 Little-Endian 系統中,低位元組會堅定不移地儲存在低位址!就像把火焰一層一層堆疊起來一樣!
▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計:語法、指標與應用
查看更多「[電子工程] 計算機概要」的主題分類考古題