| 林剑 发表于 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位二进制,然后再以十进制输出。
 |