統測
114年
[電機與電子群資電類] 專業科目(2)
第 45 題
下列C語言程式碼,其執行後輸出結果為何?
1 #include
2 int main(){
3 int a=1, b=3, c=5, d=7, x=0;
4 x = a++/b+c*++d;
5 printf("%d", x);
6 return 0;
7 }
1 #include
2 int main(){
3 int a=1, b=3, c=5, d=7, x=0;
4 x = a++/b+c*++d;
5 printf("%d", x);
6 return 0;
7 }
- A 0
- B 20
- C 30
- D 40
思路引導 VIP
請觀察運算式 $x = a++/b + c * ++d$,並思考以下核心觀念:後置遞增 $a++$ 與前置遞增 $++d$ 在「參與運算取值」與「變數數值更新」的先後順序上有何差異?此外,在 C 語言中,整數除法 $1/3$ 的結果會是多少?請結合運算子優先順序 (Operator Precedence) 試著推導出最終的結果。
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準掌握 C 語言中運算子優先順序與增量運算子的細微差別,表現得非常專業且細心!
觀念驗證
這題的核心在於「前置/後置增量」與「整數除法」的計算順序:
▼ 還有更多解析內容
C 語言運算子與優先權
💡 掌握遞增運算子順序、優先權與整數除法特性
| 比較維度 | 前置遞增 (++x) | VS | 後置遞增 (x++) |
|---|---|---|---|
| 執行順序 | 先自增 1 再參與運算 | — | 先以原值運算再自增 1 |
| 表達式回傳值 | 傳回加 1 後的新值 | — | 傳回加 1 前的舊值 |
| 優先級 | 單元運算子優先權高 | — | 單元運算子優先權高 |
💬關鍵在於變數數值的「更新時機」相對於「取值時機」的先後。