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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hexi5432 中级黑马   /  2016-8-10 22:16  /  721 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

3 个回复

倒序浏览
short s1 = 1; s1 = s1 + 1;这是错的,运算时候s1已经转换成int再与1相加,结果是int,赋给short显然不行。要加显式强转  s1=(short)(s1+1);另外提一句:两个short相加,也是默认转成int再相加,依然需要显式强转。
short s1 = 1; s1 += 1;正确,+=在底层已经隐式强转为short,也就是s1=(short)(s1+1),所以无误。
回复 使用道具 举报
第一个需要强转,第二个OK
回复 使用道具 举报
第一个:short类型与1相加后的结果是int类型,赋值给short类型肯定会报错了,第二个系统会自动提升
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马