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にはなりません。