黑马程序员技术交流社区
标题:
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错
[打印本页]
作者:
刘涛
时间:
2011-11-25 08:36
标题:
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错
本帖最后由 刘涛 于 2011-11-28 18:13 编辑
short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; s1 += 1;有什么错?
作者:
冯敏
时间:
2011-11-25 08:41
首先s1是短整型的,1代表长整型int类型的,那么相加之后的结果类型为两者之中大的,即为int,那么把int类型的赋值给short类型的,它会丢失精度,s1+=1同样道理
作者:
侯伟浩
时间:
2011-11-25 08:44
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
范例:
public class My {
public static void main(String args[]) throws Exception
{
short s1=1;
s1=(short) (s1+1);//转型后没错
s1+=1; //直接通过编译
}
}
作者:
强子
时间:
2011-11-25 08:54
2楼正解
作者:
应国炎
时间:
2011-11-29 00:19
s1 = s1 + 1; 结果向高处转换,shot int向int转换,所以S1+1的结果是int型,再赋值给shot int型S1就会报错
s1 += 1; JAVA对+= 有自动转换功能,所以不会报错
作者:
刘志祥
时间:
2011-12-2 11:23
小结:
对于编程中的运算如加 减 乘 除 :
1.在运算时要统一两边的运算值类型,统一时低级向高级转换,这个转换时自动的。
2.在赋值时右边的运算值类型也应该跟左边的变量类型是一样的。如果不一样是不能赋值的,如果非要赋值,就要进行强制转换,格式就是(要转换的类型)。
这些是我能想到的,希望朋友们能指教,小弟有礼了!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2