考虑以下代码:
byte b=1;
long l=1000;
b += l;
我希望最后一句话需要一个明确的演员,因为,
b+=l
被评估为b = b+l
和
(b+l)
部分给出一个整数。
没有显式强制转换,无法将整数分配给字节?
答案 0 :(得分:17)
首先,b+l
提供long
,而不是int
......
...但是复合赋值运算符还有其他行为。根据{{3}}:
E1 op = E2形式的复合赋值表达式等效于E1 =(T)((E1)op(E2)),其中T是E1的类型,但E1仅被评估一次。
请注意转化为T
。