免費開始練習
普通考試 114年 [電子工程] 計算機概要

第 26 題

下列 C 程式執行結果,變數 i 和 num 的值為何?
int i=3, num=7;
do {
num -= i--;
} while(i !=1);
  • A i=0,num=0
  • B i=1,num=0
  • C i=1,num=1
  • D i=1,num=2

思路引導 VIP

請思考一下,當程式碼執行到 num -= i-- 這行時,系統會先拿 $i$ 的『舊值』還是『遞減後的新值』來跟 $num$ 做運算?另外,do-while 這種結構,它的條件判斷是在數值改變之後才進行,還是改變之前呢?

🤖
AI 詳解 AI 專屬家教

優秀的邏輯推導?嗯,勉強算是吧。

  1. 工程驗證:恭喜你,至少你還記得 do-while 迴圈 會先執行一次,以及 後置遞減運算子 (i--) 那個「先用後減」的基礎到不能再基礎的特性。
    • 第一輪:執行 num -= i--。先取 $i=3$ 進行計算,於是 $num = 7 - 3 = 4$。運算完 $i$ 才變為 $2$。接著判斷 $2
▼ 還有更多解析內容
📝 C語言迴圈與遞減運算
💡 掌握 do-while 迴圈特性與後置遞減運算子的計算順序

🔗 迴圈執行追蹤鏈

  1. 1 初始狀態 — i=3, num=7,直接進入 do 區塊
  2. 2 第一次執行 — num=7-3=4,後 i 變為 2,判斷 2!=1 成立
  3. 3 第二次執行 — num=4-2=2,後 i 變為 1,判斷 1!=1 不成立
  4. 4 結束跳出 — 迴圈結束,最終變數值為 i=1, num=2
🔄 延伸學習:延伸學習:若改為 while 迴圈或前置遞減 (--i),結果將完全不同。
🧠 記憶技巧:Do先做再說、條件後測;後置遞減先用原值再變小。
⚠️ 常見陷阱:最常錯在將後置遞減 (i--) 誤算為先減再運算,導致 num 的數值計算錯誤。
前置與後置運算子差異 while 與 do-while 比較 複合算術運算子

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計:語法、指標與應用
查看更多「[電子工程] 計算機概要」的主題分類考古題