統測
111年
[電機與電子群資電類] 專業科目(2)
第 47 題
下列C語言程式碼片段執行後,變數result的值為何?
```c
int a=5, b=3;
double result =0;
result=Func( a, b);
double Func(int w, int h )
{
double A;
A=w*h/2.0;
return A;
}
```
```c
int a=5, b=3;
double result =0;
result=Func( a, b);
double Func(int w, int h )
{
double A;
A=w*h/2.0;
return A;
}
```
- A 0.0
- B 7.0
- C 7.5
- D 15.0
思路引導 VIP
請觀察函式中的關鍵運算式 $A = w * h / 2.0$。在 C 語言中,當整數型別的變數與浮點數常數 $2.0$ 進行混合運算時,系統的「隱含型別轉換」(Implicit Type Conversion)機制會如何決定運算的結果型別?這與單純的整數除法在處理小數部分時有什麼不同?
🤖
AI 詳解
AI 專屬家教
🌟 太棒了!精準掌握程式邏輯!
這題你答得非常漂亮!這顯示你對於 C 語言的函式呼叫 以及 自動型態轉換 (Type Promotion) 的觀念相當紮實,這是統測程式設計中每年必考的核心重點。
1. 觀念驗證:為什麼是 7.5?
▼ 還有更多解析內容
C語言函數與運算
💡 理解函數參數傳遞、數值運算與型別自動轉換規則。
🔗 程式碼執行邏輯鏈
- 1 參數複製傳遞 — 將 a(5), b(3) 複製到 Func 的 w, h 中
- 2 混合型別運算 — 5*3 得到 15,再除以 2.0 觸發浮點數提升
- 3 計算最終數值 — 15 / 2.0 = 7.5,並存入 double A
- 4 數值回傳賦值 — 將 7.5 回傳並存入變數 result
↓
↓
↓
🔄 延伸學習:延伸學習:了解 Call by Value (傳值呼叫) 的特性