Почему оператор приращения Java допускает сужение операций без явного приведения? [Дубликат]
Возможный дубликат:
Java + = оператор
В Java это недопустимо (некомпилировать), как и ожидалось:
long lng = 0xffffffffffffL;
int i;
i = 5 + lng; //"error: possible loss of magnitude"
Но это прекрасно (?!)
long lng = 0xffffffffffffL;
int i = 5;
i += lng; //compiles just fine
Это, очевидно, операция сужения, которая может превышатьint
спектр. Так почему нет компилятор жалуется?