我做了一个小测试来操作一个short,我遇到了一个编译问题。以下代码编译:
short s = 1;
s += s;而这张却没有:
short s = 1;
s = s + s; //Cannot convert from int to short我读过shorts自动升级为int的文章,但是这两个代码之间有什么区别呢?
发布于 2014-01-23 17:13:18
你说得对,short被提升为ints。这发生在二进制运算符+的计算过程中,被称为二进制数值提升。
但是,使用复合赋值操作符(如+= )有效地消除了这一点。Section 15.26.2 of the JLS声明:
表单E1 op= E2的复合赋值表达式等价于E1 = (T) (( E1 ) op (E2)),其中T是E1的类型,但E1只计算一次。
也就是说,这相当于将其转换回short。
https://stackoverflow.com/questions/21314877
复制相似问题