• 締切済み

double型からint型へのキャストについて

お世話になります。 掲題の疑問がわきましたので質問させてください。 Ex1. int a = 100; a /= 1.05; Ex2 int a = 100; a = 100 / 1.05; この場合、Ex1は問題なく、Ex2でエラーが発生します。 Ex2でdouble型からint型へキャストできないということは納得できるのですが、逆になぜEx1が問題なく行えるのでしょうか、、 よろしくお願い致します。

みんなの回答

回答No.2

具体的には、、、 コンパイラによって「a /= 1.05;」は 「a = (int)((double)a / 1.05D);」というようなロジックに直されるようですよ。

  • Apr2nd
  • ベストアンサー率69% (36/52)
回答No.1

+=, -=, *=, /= などの複合代入演算子は演算時に暗黙の型変換が 行われるためにエラーにはなりません