A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章闽 中级黑马   /  2012-10-22 08:58  /  1335 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s1=1;s1=s1+1;和short s1=1;s1+=1;
这两句有什么问题吗?

评分

参与人数 1黑马币 +30 收起 理由
唐志兵 + 30 赞一个!

查看全部评分

4 个回复

倒序浏览
short s1=1;s1=s1+1;会报错,损失精度。short s1=1;s1+=1;不会报错;
s1=s1+1,s1是short型的而1是int型的两个相加会将s1+1的结果自动提升为int型,将一个int型的数赋给short型会报损失精度错误提示;
而s1+=1,因为+=是一个符号,所以会将符号右边的数1自动装箱为Short类型,然后在运算,不会产生错误。
回复 使用道具 举报
s1 = s1 + 1; 编译时不能通过,因为s1是short类型,1 为默认的int型,这两个类型相加时,short型会被int型提升为int型,相加的结果 2 就变成了int型,它与s1的short型不相符,而且字节数少,所以系统会报错,出现损失精度的提示。
s1+=1; += 号只进行一步操作,运算的结果为short型。能通过编译。
回复 使用道具 举报
第一句会报错,损失精度;第二句没问题。
回复 使用道具 举报
short s1=1;s1=s1+1;会报错,损失精度。short s1=1;s1+=1;不会报错;
s1=s1+1,s1是short型的而1是int型的两个相加会将s1+1的结果自动提升为int型,将一个int型的数赋给short型会报损失精度错误提示;
而s1+=1,因为+=是一个符号,所以会将符号右边的数1自动装箱为Short类型,然后在运算,不会产生错误。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马