普通考試
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$。
▼ 還有更多解析內容