農會 資訊管理類程式設計110 年第 18 題單選題
C語言片段,float a=5/2; 其變數a的值為何?
D正確答案
C語言中兩個整數相除會先進行「整數除法」捨去小數,賦值時才轉換為浮點數。
為什麼答案是 D
5 和 2 皆為整數,相除結果為整數 2,賦值給 float 變數 a 後為 2.0(即選項 2)。
考點:浮點數除法考點:幹擾選項考點:整數除法
載入中…
完整詳解
Pro · 無限重點 C語言中兩個整數相除會先進行「整數除法」捨去小數,賦值時才轉換為浮點數。
看到 5/2 沒有小數點,直接當整數除,無條件捨去小數得 2,最後才轉 float!
逐選項分析
A浮點數除法✕ 陷阱
若運算式中包含浮點數(如 5.0/2 或 5/2.0)才會得出 2.5,本題皆為整數。
B幹擾選項✕
與 5/2 的運算結果無關的幹擾選項,純屬瞎猜。
C幹擾選項✕
與 5/2 的運算結果無關的幹擾選項,純屬瞎猜。
D整數除法✓ 正確
5 和 2 皆為整數,相除結果為整數 2,賦值給 float 變數 a 後為 2.0(即選項 2)。
C語言除法運算對照表
| 運算式 | 運算型態 | 計算結果 | 賦值給 float |
|---|
| 5 / 2 | 整數 / 整數 | 2 | 2.0 |
| 5.0 / 2 | 浮點 / 整數 | 2.5 | 2.5 |
| 5 / 2.0 | 整數 / 浮點 | 2.5 | 2.5 |
| (float)5 / 2 | 強制轉型 | 2.5 | 2.5 |
考生常誤以為變數 a 宣告為 float,右邊的 5/2 就會自動變成浮點數運算。實際上,右側運算會「先」以整數型態完成計算(得 2),「後」在賦值時才轉換為 float(2.0)。