对于short s = 1; s += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
对于short s = 0; s = s + 1; 由于s+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
short x=x+1; 这种情况下 一般都会编译报错,因为=右边有变量存在,会有精度丢失的可能。这里的x是short类型2字节存储空间的变量,1是int类型4字节,=右边就会将x动提升至int型,而等号左边是short ,所以会有找到int,需要short。这里的+=也是赋值运算符哦,所以会有类型的自动转换动作,shortx=short(x+1),此运算符的效果基本上与指定 result = result + expression 相同,不同的只是仅计算一次 result。http://msdn.microsoft.com/zh-cn/library/f6z5yhhs(v=vs.80).aspx