民國113年 地方四等 電子工程 計算機概要

第24題

下列C 指令的輸出為何?short s = 32768/2;printf("%hd %hd", s<<1, s<<2);

題目

下列C 指令的輸出為何?short s = 32768/2;printf("%hd %hd", s<<1, s<<2); A. -32768 0 B. 32768 65536 C. 65536 32768 D. 32768 03

官方答案

  • 答案:A. -32768 0

解析

32768/2 為 16384,可正常存入 short。但 short 為 16 位元有號整數,範圍是 -32768~32767。運算 s<<1 時 s 會先提升為 int,得到 32768(0x00008000),printf 以 %hd 只取低 16 位元,即 0x8000,依二補數解讀為 -32768。s<<2 得到 65536(0x00010000),低 16 位元全為 0,故輸出 0。因此結果為 -32768 0。選項 B、C 忽略了 short 的 16 位元截斷與溢位;D 的數值組合不成立。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料

答案以考選部公告之測驗式試題標準答案 PDF 為準。