本文介绍了为什么Java增量操作符允许没有显式转换的收缩操作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Java中,这是无效的):

In Java, this is not valid (doesn't compile), as expected:

long lng = 0xffffffffffffL;
int i;
i = 5 + lng;    //"error: possible loss of magnitude"

p>

But this is perfectly fine (?!)

long lng = 0xffffffffffffL;
int i = 5;
i += lng;       //compiles just fine

这显然是一个缩小操作,可能超过 int 范围。那么为什么编译器不提示呢?

This is obviously a narrowing operation, that can possibly exceed the int range. So why doesn't the compiler complain?

推荐答案

i + = lng;

i += lng; compound assignment operator cast's implicitly.

i+=lng; 
is same as 
i = int(i+lng);

FROM :

这篇关于为什么Java增量操作符允许没有显式转换的收缩操作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 01:25