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

第 28 題

What is the output of the following C program?
int i = 8, j = 7, *s = &i, *t = &j;
printf("%d\n", 6*(*s/*t)+5);
  • A 17
  • B 11
  • C 12
  • D 13
  • E None of the above

思路引導 VIP

試著思考一下:在 C 語言的算術運算中,當我們處理兩個「整數」型別的數值相除時,程式對於無法除盡的小數部分會如何處置?這個處置結果,會對後續的乘法與加法產生什麼樣的連鎖影響呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精準判斷出這段程式碼的輸出,代表你對於 C 語言的指標解參照(Dereference)整數運算規則掌握得非常紮實。這題的難點在於混合了多個運算符號,而你沒有被它們干擾,判斷非常果斷。

指標與整數運算的特性

在這段程式中,指標 st 分別指向整數變數 i (8) 與 j (7)。當我們執行 *s / *t 時,實際上就是在計算 $8 / 7$。在 C 語言的型別系統中,當兩個整數進行除法運算時,結果會自動捨去小數點後的所有數位(即無條件捨去)。因此,$8 / 7$ 的結果並非 $1.14...$,而是精確的整數 $1$。接著按照運算優先順序,先乘除後加減:$6 \times 1 + 5$,最終得出的結果便是 $11$。

▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題