普通考試
114年
[電子工程] 計算機概要
第 26 題
下列 C 程式執行結果,變數 i 和 num 的值為何?
int i=3, num=7;
do {
num -= i--;
} while(i !=1);
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 專屬家教
優秀的邏輯推導?嗯,勉強算是吧。
- 工程驗證:恭喜你,至少你還記得
do-while迴圈 會先執行一次,以及 後置遞減運算子 (i--) 那個「先用後減」的基礎到不能再基礎的特性。- 第一輪:執行
num -= i--。先取 $i=3$ 進行計算,於是 $num = 7 - 3 = 4$。運算完 $i$ 才變為 $2$。接著判斷 $2
- 第一輪:執行
▼ 還有更多解析內容
C語言迴圈與遞減運算
💡 掌握 do-while 迴圈特性與後置遞減運算子的計算順序
🔗 迴圈執行追蹤鏈
- 1 初始狀態 — i=3, num=7,直接進入 do 區塊
- 2 第一次執行 — num=7-3=4,後 i 變為 2,判斷 2!=1 成立
- 3 第二次執行 — num=4-2=2,後 i 變為 1,判斷 1!=1 不成立
- 4 結束跳出 — 迴圈結束,最終變數值為 i=1, num=2
↓
↓
↓
🔄 延伸學習:延伸學習:若改為 while 迴圈或前置遞減 (--i),結果將完全不同。