首先我们来看short s =4;这个变量
它是把4整数赋值给short,在赋值前检查是否超过了short的范围,如果在范围以内就赋值成功,这里是没有问题的.
下面s=s+3;这个变量是s变量跟整数型4进行计算,在计算前s会自动提升为int类型数据,相加完成后以int类型数据
赋值给short s变量肯定是要丢失精度的,因为short占用2个字节,而int是4个字节.
4个字节赋值给2个字节的容器肯定是要丢失精度的.
而s +=3实际是s = s+3的简写,但是运算完成后进行了强制转换成short赋值,所以这里不会报错
如果最后得值超过了short的取值范围,它最后得值也是就是精度的.
希望可以给你带来帮助,如果有不明白的,可以私密我.
|