社区
Java SE
帖子详情
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
GeneXus低代码平台践行者
2007-07-17 03:50:13
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
不明白 short s1 = 1; s1 += 1 为什么正确?
高手解释下。 + 与 += 主要区别
搜索没有搜到
多谢。
...全文
1620
4
打赏
收藏
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。 不明白 short s1 = 1; s1 += 1 为什么正确? 高手解释下。 + 与 += 主要区别 搜索没有搜到 多谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lieves
2012-02-15
打赏
举报
回复
当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则:
• 运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,
且运算结果与运算符左边数值类型相同。
在s1=s1+1;中,s1+1
运算的结果是int型,把它赋值给一个 short型变量s1,所以会报错;而在s1+=1;中,由于
是s1是short类型的,所以1首先被强制转换为short型,然后再参与运算,并且结果也是
short类型的,因此不会报错。那么,s1=1+1;为什么不报错呢?这是因为1+1是个编译时可
以确定的常量,“+”运算在编译时就被执行了,而不是在程序执行的时候,这个语句的效果
等同于s1=2,所以不会报错。前面讲过了,对基本类型执行强制类型转换可能得出错误的
结果,因此在使用+=、 -=、*=、/=、%=等运算符时,要多加注意。
qnprograme
2007-07-17
打赏
举报
回复
其实S1=S1+1,与S1+=S1在得到的结果是一样的,但是编译器处理的时候是不一样的。建议你看看编译原理。为什么会编译器会自动转成INT,这主要是精度的问题。
动感超油
2007-07-17
打赏
举报
回复
是不是编译器就是这么规定的,还是运算符的问题,至今我也搞不懂,我身边的同事也很困惑这个问题
bing3joe
2007-07-17
打赏
举报
回复
你这问题其实也多问 就好象1+1为什么等于2时对的一样;本来就是这样设计的啊!
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。这中间多处了个赋值的s1=s1+1的过程,就如你说的那样
而s1 += 1,没有赋值过程,可以理解为s++,就不需要类型的转换,或者也可以说是自动类型的转换;
记住就好了!
javaWEB面试题大全(机会只有一次,千万别
错
了)
javaWEB面试题集合
详解:
short
s1
= 1;
s1
=
s1
+ 1;有什么
错
?
short
s1
= 1;
s1
+= 1;有什么
错
?
前置知识 数据类型转换 自动转换(隐式):当数据类型不一样将发生自动类型转换,要求小范围到到大范围。 强制类型转换(显式):从大范围到小范围,格式 int a=(int)5L;可能会丢失精度。 面试题:
short
s1
= 1;
s1
=
s1
+ 1;有什么
错
?
short
s1
= 1;
s1
+= 1;有什么
错
? 首先
short
s1
= 1;
s1
=
s1
+ 1;会报类型转换的
错
误,Java中整数默认为int类型,int->
short
是大范围到小范围,无
short
s1
= 1;
s1
=
s1
+ 1;有什么
错
?
short
s1
= 1;
s1
+= 1;有什么
错
?
第一个问题:
short
s1
= 1;
s1
= 1 + 1;有什么
错
?
s1
是
short
类型,可以自动转为int,但是
s1
+1 在运算时,是会被提升为int类型进行计算,得到结果自然也是int类型,而int类型是无法自动转为
short
类型的,需要添加强转:(
short
)(1+1),并且这种强转会丢失精度; 第二个问题:
short
s1
= 1;
s1
+= 1;有什么
错
? 这个其...
数据类型转换:
short
s1
= 1;
s1
=
s1
+ 1;有什么
错
?
short
s1
= 1;
s1
+= 1;有什么
错
?
short
s1
=1,s2=1;
short
s3=
s1
+s2;
一个基础的数据类型转换问题,
short
s1
= 1;
s1
=
s1
+ 1;有什么
错
?
short
s1
= 1;
s1
+= 1;有什么
错
? 。第一眼看这个问题,能想到数据类型转换、
s1
=
s1
+ 1与复合赋值运算
s1
+=1问题的区别,深入可能是 += 的使用注意事项。这里由于思考了比较久,然后查阅了一些博客和官方文档关于 += 的赋值运算说明,这里做一下记录,巩固基础。 首
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章