short data = 0;//这个为什么对?难道1不是int类型么
data = data + 1;//这个错,我知道是因为data+1返回int类型
data = data + data;//这个错,原因同上
data += 1;//这个对,为什么呢?难道1不是int么??
data += data;//这个对,为什么呢?
记住,short类型长度比int类性短,当short + int 时候默认结果是类型较长的一方也就是int 所以 i + 1 值是int类型,不能赋值给short类型,也就是说长的类型不能赋值给短的类型,除非强制转型(但这样会产生精度问题)
以下问题,都是上面知识点的衍生物。
还有,提示你:short i = 0;i += 1 这样写是对的,单目运算符+=,-= ...强制转换为长度短的类型。