黑马程序员技术交流社区

标题: 基本数据类型的问题 [打印本页]

作者: 章闽    时间: 2012-10-22 08:58
标题: 基本数据类型的问题
short s1=1;s1=s1+1;和short s1=1;s1+=1;
这两句有什么问题吗?
作者: 古银平    时间: 2012-10-22 09:15
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类型,然后在运算,不会产生错误。
作者: 刘学宾    时间: 2012-10-22 09:36
s1 = s1 + 1; 编译时不能通过,因为s1是short类型,1 为默认的int型,这两个类型相加时,short型会被int型提升为int型,相加的结果 2 就变成了int型,它与s1的short型不相符,而且字节数少,所以系统会报错,出现损失精度的提示。
s1+=1; += 号只进行一步操作,运算的结果为short型。能通过编译。
作者: 7℃洋    时间: 2012-10-22 09:51
第一句会报错,损失精度;第二句没问题。
作者: chens2865    时间: 2012-10-22 18:07
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类型,然后在运算,不会产生错误。




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