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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙浩 中级黑马   /  2012-11-23 00:15  /  1510 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙浩 于 2012-11-24 20:03 编辑

请问各位大侠:short s = 3; s = s+2; s+=2,有什么区别啊?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
这两句话的意思是一样的
回复 使用道具 举报
本帖最后由 张雄 于 2012-11-23 00:51 编辑

short s = 3; s = s+2;在做运算时会有自动类型提升,将s提升为int型做加运算后,结果为int型赋值给short型 会有损精度
s+=2,在做运算时+=有默认强制转换效果,所以该句可编译通过!

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
s=s+2;编译失败,因为short类型是2个字节,2是int类型4个字节。运算完毕后右边表达式的值提升为int类型,无法赋值给左边,必须进行强制转换
s+=2; 编译成功,+=会自动进行类型转换,不用自己再手动进行类型转换
回复 使用道具 举报
问题已经解决!谢谢给位!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马