黑马程序员技术交流社区

标题: sos!!!请回复分析,谢谢 [打印本页]

作者: hexi5432    时间: 2016-8-10 22:16
标题: sos!!!请回复分析,谢谢
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
作者: 水月灬清影    时间: 2016-8-11 08:17
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),所以无误。

作者: qetu001212    时间: 2016-8-11 20:49
第一个需要强转,第二个OK
作者: 龙旋    时间: 2016-8-11 23:28
第一个:short类型与1相加后的结果是int类型,赋值给short类型肯定会报错了,第二个系统会自动提升




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2