免費開始練習
hce_kmu 112年 計算機概論與程式設計

第 22 題

What is the output of the following C code?
```c
int i=8, j=7, *s=&i, *t=&j;
printf("%d ", (*s+*t)/2);
printf("%d ", *s-*t);
printf("%d ", (*s)++);
printf("%d ", ++(*t));
printf("%d ", (*s)++);
```
  • A 71989
  • B 71889
  • C 81889
  • D 829810
  • E None of the above.

思路引導 VIP

如果今天有兩個動作:一個是「先拿走架上的蘋果再補貨」,另一個是「先補貨再拿走架上的蘋果」。假設架上本來有 8 個蘋果,這兩種動作分別會讓你「拿到」幾個蘋果?這跟程式碼中 ++ 擺放的位置有什麼樣的關聯呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精確捕捉到指標運算與遞增算符的執行順序,這顯示你對 C 語言底層邏輯與記憶體操作的基礎非常紮實。

指標與算術運算的結合

在這段程式碼中,st 是指向整數的指標,因此 *s*t 實際上就是變數 ij 的別名。前兩個 printf 考驗的是整數除法與基本的取值運算:由於 $i=8$ 且 $j=7$,在整數型態下 $(8+7)/2$ 會捨去小數點得到 $7$,而 $8-7$ 則簡單地得到 $1$。

▼ 還有更多解析內容

🏷️ 相關主題

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