可能重复:
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
范围。那么为什么编译器不抱怨呢?