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

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

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

難易度分析

4 / 5

本題為複選題,且涉及有號與無號字元型別的溢位機制及二補數表示法,要求考生對記憶體數值儲存與解讀有精確的掌握。

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

  • ① c1=255:「c1=255」為錯誤敘述。`char` 為有號字元型別,將 255 賦值給 `char` 會發生溢位,其二進位 `11111111` 以二補數解讀為 -1,故 `(int)c1` 輸出為 -1。
  • ③ c1=-255:「c1=-255」為錯誤敘述。`char` 型別將 255 的二進位 `11111111` 解讀為 -1(非 -255),因 8 位元有號數範圍為 -128~127,-255 已超出可表示範圍。
  • ④ uc1=0:「uc1=0」為錯誤敘述。`unsigned char uc1` 被明確賦值為 255,並非 0,`(unsigned int)uc1` 輸出為 255。

錯誤選項解析

  • ② uc1=255:「uc1=255」為正確敘述。`unsigned char` 為無號字元型別,範圍為 0~255,255 可正常儲存,`(unsigned int)uc1` 輸出即為 255。
Learning Tip

"本題核心考點為 signed/unsigned char 的型別差異與二補數表示法。常考陷阱:`char` 預設為有號型別,賦值超過 127 會產生溢位,255(`11111111`)會被解讀為 -1 而非 255。實務上若需儲存 0~255 的數值,應使用 `unsigned char` 或 `uint8_t`。"

學員答題分佈

①c1=2550%
②uc1=2550%
③c1=-2550%
④uc1=00%

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

相似類型題目