int i = 1d;がコンパイルエラーなのにi += 1d;がコンパイルエラーじゃないのはなんで?

なんで?


追記
言語仕様に、E1 op= E2は、E1 = (T)(E1 op E2)と同じと書いてありました。TはE1の型。なので、int iでi += 1dはi = (int)(i + 1d)に変換されるらしい。
15.26.2 Compound Assignment Operators