首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >短s=s+s和s += s之间的差异

短s=s+s和s += s之间的差异
EN

Stack Overflow用户
提问于 2014-01-23 17:09:51
回答 1查看 348关注 0票数 9

我做了一个小测试来操作一个short,我遇到了一个编译问题。以下代码编译:

代码语言:javascript
复制
short s = 1;
s += s;

而这张却没有:

代码语言:javascript
复制
short s = 1;
s = s + s; //Cannot convert from int to short

我读过shorts自动升级为int的文章,但是这两个代码之间有什么区别呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21314877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档