我对Java中的数据类型转换感到困惑。为什么这段代码能起作用:
long q = 5;
long r = 4;
int p = 0;
p -= q * r;
long q = 5;
long r = 4;
int p = 0;
p = p - q*r;
在Java中如何处理显式减法,而不是显式减法?
p-=q*r
成功有两个原因:
首先,q*r
是一个编译时间常数,并且已知在int
范围内。
其次,a+=B
与a=a+B
不同,而是与a=a+(int)B
相同。
结合这两个事实,编译器就知道它可以安全地做什么。