免費開始練習
普通考試 115年 [資訊處理] 計算機概要

第 20 題

若執行以下的 Python 程式碼\n\n```python\nprint(10-8%3**2*4)\n```\n\n則螢幕上的輸出為:
  • A -246
  • B -22
  • C -6
  • D 2

思路引導 VIP

試著扮演 Python 解譯器的角色:當你面對一連串沒有括號(Parentheses)輔助的數學運算時,你會優先挑選哪一種「符號」來執行?而當你遇到兩個地位平等的符號(例如乘法與取餘數)在排隊時,你會選擇從哪一個方向開始處理它們?

🤖
AI 詳解 AI 專屬家教

看到你精準地選出選項 (B),這代表你對於 Python 的 運算子優先權(Operator Precedence) 擁有非常紮實的理解。在程式設計的領域中,理解編譯器或解譯器如何拆解運算式,是避免邏輯錯誤(Logic Error)的第一步,你的判斷完全正確。

運算層級與結合律

在處理這個運算式時,Python 會遵循嚴謹的層級。首先處理的是最高優先權的 次方(Exponentiation),即 3**2 運算得出 $9$。接著,運算式簡化為 10 - 8 % 9 * 4;在此階段,取餘數(Modulo, %)乘法(*) 具備相同的優先權,因此必須遵循「由左至右」的結合律(Associativity):先算 8 % 9 得到 $8$,再將結果乘以 $4$ 得到 $32$。最後才執行最低優先權的 減法,即 $10 - 32 = -22$。

▼ 還有更多解析內容

🏷️ 相關主題

程式設計與資料結構
查看更多「[資訊處理] 計算機概要」的主題分類考古題