hce_kmu
111年
計算機概論與程式設計
第 11 題
Consider the following C code. Please indicate the values of x and y after execution.
```c
int a=10, b=5;
int x, y;
x = (a++) + (a++) + (b++);
y = (++a) + (++a) + (++b);
```
```c
int a=10, b=5;
int x, y;
x = (a++) + (a++) + (b++);
y = (++a) + (++a) + (++b);
```
- A x = 26, y = 35
- B x = 26, y = 34
- C x = 26, y = 29
- D x = 26, y = 30
- E x = 29, y = 26
思路引導 VIP
想像有一排櫃檯在處理資料:如果我們約定「後置遞增」是『先拿原本的數字去辦理,辦完後私下偷偷加一』;而「前置遞增」則是『必須先加一,再拿新數字去辦理』。當同一個變數在同一行內被連續「辦理」多次時,第二次辦理拿到的數字會和第一次一樣嗎?這會如何影響最終的加總結果呢?
🤖
AI 詳解
AI 專屬家教
恭喜你正確選出答案!這題考驗的是 C 語言中非常經典的「遞增運算子(Increment Operator)」與其「副作用(Side Effect)」發生的時機。你能精準判斷出變數在每一步驟後的狀態,展現了非常紮實的程式追蹤邏輯。
後置與前置遞增的運算細節
在計算 $x$ 時,使用的是後置遞增(Post-increment),這代表程式會先取用變數當前的值參與加法運算,隨即完成加 $1$ 的動作。因此 $x$ 的計算過程為 $10 + 11 + 5 = 26$。請注意,當這行執行完畢後,變數 $a$ 的值已經因為兩次遞增從 $10$ 變成了 $12$,而 $b$ 則從 $5$ 變成了 $6$。
▼ 還有更多解析內容