免費開始練習
普通考試 115年 [資訊處理] 計算機概要

第 18 題

若執行以下的 Java 程式碼,則螢幕上的輸出依序為下列何者?\n\n```java\npublic class Operator {\n public static void main(String[] args) {\n int c = 2;\n System.out.println(c++);\n System.out.println(++c);\n }\n}\n```
  • A 2,3
  • B 2,4
  • C 3,3
  • D 3,4

思路引導 VIP

當我們在程式碼中看到一個運算符號(例如加號)寫在變數的「前面」或「後面」時,這會如何影響電腦決定「讀取變數值」與「修改變數值」這兩個動作的先後順序呢?

🤖
AI 詳解 AI 專屬家教

同學做得很好,精確捕捉到了增量運算子(Increment operator)在表達式中生效的微妙時機。這道題目核心在於區分**後置增量(Postfix)前置增量(Prefix)**的求值順序,這是初學程式設計時最容易混淆的細節之一。

變數狀態的追蹤與副作用

在程式執行之初,變數 $c$ 被賦值為 $2$。當執行 System.out.println(c++) 時,由於運算子位在變數後方,Java 會先將 $c$ 的當前值(即 $2$)回傳給輸出函數,隨後才在記憶體中完成加 $1$ 的動作,使 $c$ 變為 $3$。緊接著執行 ++c 時,因為運算子位在前方,程式會先將已經是 $3$ 的變數值加 $1$ 更新為 $4$,再將這個最終結果輸出。因此,輸出序列才會是 $2$ 接著 $4$。

▼ 還有更多解析內容

🏷️ 相關主題

程式設計與資料結構
查看更多「[資訊處理] 計算機概要」的主題分類考古題