民國111年 地方四等 電子工程 計算機概要
第23題
下列輸出何者正確?int p = 1, *q = &p;p = ++*q;*q = ++p;Printf("%d %d", p, *q++);
題目
下列輸出何者正確?int p = 1, *q = &p;p = ++*q;*q = ++p;Printf("%d %d", p, *q++); A. 21 B. 22 C. 23 D. 33
官方答案
- 答案:D. 33
解析
p 初值為 1,q 指向 p,因此 *q 與 p 是同一塊記憶體。執行 p = ++*q 時,前置遞增先將 *q(即 p)加 1 成為 2,再指定回 p,故 p 為 2。接著 *q = ++p 會先將 p 遞增為 3,再把 3 寫回 *q(仍是 p),所以 p 為 3。printf 先輸出 p 的值 3;再計算 *q++,此處先取值 *q(等於 3)輸出,之後 q 才後置遞增,指標移動不影響已印出的內容。因此輸出為「3 3」,即選項 D,而非 33 這個數字。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。
官方資料
答案以考選部公告之測驗式試題標準答案 PDF 為準。