民國113年 地方四等 電子工程 計算機概要
第27題
考慮下列C 語言程式的宣告union allType {char character;int integer;float real;double doubleN…
題目
考慮下列C 語言程式的宣告union allType {char character;int integer;float real;double doubleNum;};如果sizeof(char) 是1, sizeof(int) 是4, sizeof(float) 是4, sizeof(double) 是8, sizeof(allType) 是多少? A. 8 B. 16 C. 17 D. 20
官方答案
- 答案:A. 8
解析
union(聯合型別)的所有成員共用同一塊記憶體,同一時間只能存放其中一個成員的值,因此其大小並非各成員大小相加,而是取「最大成員的大小」,再依對齊規則調整。四個成員大小分別為 char 1、int 4、float 4、double 8,最大者為 double 的 8 位元組;聯合的對齊需求為各成員中最嚴格者,即 double 的 8 位元組對齊,8 本身已是 8 的倍數,故 sizeof(allType) 為 8。選項 B 的 16、C 的 17、D 的 20 都把 union 誤當成 struct 累加或加上額外填充,與共用記憶體的特性不符。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。
官方資料
答案以考選部公告之測驗式試題標準答案 PDF 為準。