Q83.
下列有關型態強迫轉換(Type Coercion)的敘述,那些為正確?
電腦軟體設計共同科目 · 乙級 · Q83
難易度分析
3 / 5
本題採取複選形式,要求全面判別靜態與動態檢查的定義、寬化轉換的特性以及特定語言的型態轉換支援情況,增加了解題的複雜度與判斷門檻。
正確答案 (複選):①, ②, ③
- ① 在編譯時才進行特定型態檢查成為靜態型態檢查(Static Type Checking):靜態型態檢查(Static Type Checking) 是在編譯時期(Compile-time) 由編譯器進行型態驗證,可於程式執行前發現型態錯誤,如 Java、C# 等強型別語言採用此機制。
- ② 在執行時才進行特定型態檢查成為動態型態檢查(Dynamic Type Checking):動態型態檢查(Dynamic Type Checking) 是在執行時期(Runtime) 才進行型態驗證,如 Python、JavaScript 等動態語言採用此機制,彈性較高但錯誤需到執行時才會被發現。
- ③ 寬化法(Widening)中,轉換前型態的值在轉換後型態的值域中均能找到其對應值:寬化轉換(Widening Conversion) 是將較小範圍的型態轉換為較大範圍的型態(如 `int` 轉 `long`、`float` 轉 `double`),轉換前的值域完全包含於轉換後的值域中,因此不會發生資料遺失。
錯誤選項解析
- ④ C++語言不提供純量(Scalar)型態轉換:C++ 提供完整的純量(Scalar)型態轉換,包含整數提升(Integer Promotion)、浮點數轉換及算術轉換(Arithmetic Conversion),並支援 `static_cast`、`reinterpret_cast` 等明確轉換運算子,此敘述完全錯誤。
Learning Tip
"本題核心考點為型態檢查時機(靜態 vs 動態)與型態轉換方向(寬化 vs 窄化)的區別。常考陷阱:① 混淆「編譯時期」與「執行時期」的檢查機制;② 窄化轉換(Narrowing Conversion) 可能導致資料截斷或精度損失(如 `double` 轉 `int` 會捨棄小數部分);③ C/C++ 的隱式轉換與顯式轉換機制是實務上容易引發 Bug 的來源,應優先使用明確轉型運算子以提升程式可讀性與安全性。"
學員答題分佈
①在編譯時才進行特定型態檢查成為靜態型態檢查(Static Type Checking)0%
②在執行時才進行特定型態檢查成為動態型態檢查(Dynamic Type Checking)0%
③寬化法(Widening)中,轉換前型態的值在轉換後型態的值域中均能找到其對應值0%
④C++語言不提供純量(Scalar)型態轉換0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!