C語言基礎
int a = 7, b = 2;
double x = a / b;
double y = (double)a / b;
printf("%.1f %.1f\n", x, y);執行上方含有整數除法的程式碼時的輸出,下列何者正確?
- A3.0 3.0
- B3.0 3.5
- C3.5 3.5
查看答案與解析
正確答案:B. 3.0 3.5
a / b 是 int 之間的除法,因此是整數除法,捨去小數部分而得到3。即使把這個3放入 double 的 x,也只會變成 3.0,被捨去的0.5不會回來。y 則是先把 a 轉換為 double(強制轉型),因此 b 也被轉換為 double,進行實數除法,得到 3.5。計算方式不是由指派目標的型別決定,而是由參與運算之值的型別決定。
- A. y 是先把 a 轉換為 double 再除,因此以實數除法得到3.5。
- B. 正確。x 是由整數除法結果3轉換而來的3.0,y 是實數除法的3.5。
- C. x 是在 int 之間的除法中變成3之後才轉換為 double,因此不會是3.5。