免費開始練習
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);
```
  • 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$。

▼ 還有更多解析內容

🏷️ 相關主題

計算機組織結構與資料儲存原理
查看更多「計算機概論與程式設計」的主題分類考古題