可能很多人认为i+=j仅仅是i=i+j的缩写,持这种观点的可以看看以下代码:
int i=8;
long l=8;
i=i+l;
实际上,第三行代码是会报如下错的:
Type mismatch: cannot convert from long to int .
然而,以下代码却能运行不报错:
int i=8;
long l=8;
i+=l;
从中可以看出,i+=j并不仅仅是i=i+j的缩写,准确的说,i+=j应该是i=(typeof i)(i+j)的缩写才对。