hce_nsysu
114年
計算機概論與程式設計
第 44 題
What is printed by the following C program?
int a = 17, b = -2;
printf("%d \n", (a + b) >> 2);
int a = 17, b = -2;
printf("%d \n", (a + b) >> 2);
- A 0
- B 1
- C 2
- D 3
- E 15
思路引導 VIP
想像一下,在十進位系統中,如果我們把數字「100」的每一位數都向右移動一格(變成 10),這個數值縮小了幾倍?現在轉到二進位系統,若將整數的位元向右移動「兩次」,這在數學運算上相當於對原數進行了幾次的除法運算呢?
🤖
AI 詳解
AI 專屬家教
恭喜你精準地掌握了算術運算與位元操作的結合!這道題目考驗的是對 C 語言運算優先序以及位元邏輯的基礎理解。你能夠準確避開負數陷阱並完成計算,展現了非常紮實的邏輯能力。
算術運算與優先級
在程式執行時,括號內的 (a + b) 會優先處理。這裡 $17 + (-2)$ 的結果為 $15$。雖然題目中出現了負數 $b = -2$,但加法運算後的結果為正整數,這簡化了後續位元運算的複雜度(不需要考慮負數的補數位移問題)。
▼ 還有更多解析內容