2016-03-13 14 views
5

int = int * doubleという形式を代入するとエラーが発生し、int * = doubleという形式の代入はエラーを起こさない(Javaの場合)か?int = int * doubleはエラーを返し、int * = doubleは(Javaでは)どうしてですか?

例:

public class TestEmp { 

    public static void main(String[] args) { 

     double e = 10; 
     int r = 1; 
     r *= e; 

     r = r * e; 
     System.out.println("De uitkomst van r :" + r); 

    } 
} 

r *= eが受け入れられr = r * eはありません。どうして? r * eの結果はdoubleあるので、あなたはintに保管する際の精度の損失が発生しますので

答えて

9

r = r * eはあなたにエラーが発生します。

r *= er = (int)(r * e)source)の構文糖であるため、エラーは発生しません。

0

reが異なるタイプです。 *=などの複合代入演算子を使用する場合、タイプはnarrowly暗黙のうちに)で変換されます。 *演算子は暗黙的に変換されるわけではないので、明示的に変換する必要があります。

r = (int) (r * e); 
関連する問題