提问者:小点点

Java中不同数据类型的复合减法[重复]


我对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中如何处理显式减法,而不是显式减法?


共1个答案

匿名用户

p-=q*r成功有两个原因:

首先,q*r是一个编译时间常数,并且已知在int范围内。

其次,a+=Ba=a+B不同,而是与a=a+(int)B相同。

结合这两个事实,编译器就知道它可以安全地做什么。