/* int, double、暗黙の型変換 int ⇔ double の暗黙の型変換に気をつけましょう。 割り算の時には int の割り算と double の割り算の違いに気をつけましょう。 */ #include #include int main() { int x; double y; x = atan(1) * 4; printf("%f\n", sin(x)); /* ↑ * x の値が π になったつもりでいると・・・ * * double ⇔ int は勝手に変換されてしまう。 * コンパイラによっては、double → int の変換を暗黙にしようとすると警告をだすものも。 * gcc の場合、-Wall オプションをつければ警告を出してもらえる。 */ y = 11 / 10; printf("%f\n", y); /* ↑ * 暗黙の型変換があるのは代入時のみ。 * 11 も 10 も int なので・・・ * * y == 1.1 にしたければ、以下のようにする。 * y = (double)11 / 10; * または * y = 11.0 / 10.0; * * 当然、以下のようなのでは駄目。 * y = (double)(11 / 10); */ return 0; } /* ・演習 x を double にしてみましょう。 また、y の値がちゃんと 1.1 になるように修正しましょう。 */