直到今天,我还以为例如:
i += j;
只是以下方面的捷径:
i = i + j;
但是,如果我们尝试这样做:
int i = 5;
long j = 8;
然后i = i + j;
将不会编译,但i += j;
会编译良好。
这是否意味着实际上i += j;
是类似这样的捷径
i = (type of i) (i + j)
?
i+=(long)j;
甚至会编译良好。
i += (int) f;
在加法之前强制转换f,所以它不是等效的。(int) i += f;
赋值后强制转换结果,也不相等。没有地方进行强制转换,表示您要在添加后但在赋值之前强制转换值。