LONGEPASS
電腦軟體設計(C++)/C++/Q160
困難
正確率 -
Q160.

有關下列C++程式輸出,哪些錯誤?電腦軟體設計(C++) 乙級 C++ 第 160 題 題目 圖片

電腦軟體設計(C++) · 乙級 · C++ · Q160

難易度分析

4 / 5

本題涉及有號字元的溢位機制與位移運算之符號延伸特性,要求對二進位補數表示法有深入理解。此外,本題採複選形式且要求辨識錯誤選項,增加了分析與判斷的複雜度。

正確答案 (複選):①, ③

  • ① c1=-1:此為錯誤敘述。c1 = 1 << 7 計算結果為 128,但 signed char 的取值範圍為 -128~127,128 會溢位,在 two's complement 表示法下,二進位 10000000 被解讀為 -128,而非 -1。
  • ③ c2=-32:此為錯誤敘述。c2 = -1 經 算術右移 5 位 後,因 -1 的二進位表示為全 1,右移後補入的位元仍為 1,結果維持 -1,而非 -32。

錯誤選項解析

  • ② c2=-1:此為正確敘述。c2 初始值為 -1(二進位全為 1:11111111),執行 算術右移 >>= 5 時,符號位元保持不變,結果仍為全 1,即 -1。
  • ④ c1=-128:此為正確敘述。1 << 7 = 128 超出 signed char 正數上限 127,溢位後以 two's complement 解讀為 -128。
Learning Tip

"本題核心考點為 signed char 的溢位行為 與 算術右移(arithmetic right shift)的符號延伸特性。常考陷阱:① 1 << 7 = 128 對 signed char 而言會溢位變成 -128,而非保持 128;② -1 的算術右移 無論移幾位結果仍是 -1,因為所有位元皆為 1,右移補入的仍是 1。需區分 算術右移(補符號位) 與 邏輯右移(補 0) 的差異。"

學員答題分佈

①c1=-10%
②c2=-10%
③c2=-320%
④c1=-1280%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目