林剑 发表于 2012-10-31 22:22
a=a+2缺少精度是因为你前面定义了a为short类型占2个字节,而2是int型占4个字节,a+2结束是整形复制给short ...
“a=a+(short)2当然不行,你直接强制将int型转换成short型少了2个字节,会损失精度”
这里不对吧。。。。编译出错不是说(short)2出错。。。是说的整个加法,因为a和(short)2都是short,运算时自动提升成int,然后将这个int型的和复制给short型会损失精度。
若有语句执行a=(short)5555555;这样是不会报错的,输出结果会直接取5555555的二进制中低位开始的16位二进制,然后再以十进制输出。 |