日期:2014-05-17  浏览次数:20783 次

short i=0;i+=1;这不报错为什么?
像short i=0;i=i+1;就会报错。

------解决方案--------------------
老问题 以前回答过 再次懒的写 
原帖:http://topic.csdn.net/u/20120213/15/c5279a05-ff81-4c5e-a408-bc0d780f1e2c.html

这是我给的答案
1. short s1=1;s1=s1+1;为什么是错的

在进行算法运算的时候,内部CLR的虚拟机只能进行最低32位的运算 也就是int
所以不管你是short+short 还是byte+short 最终都会被提升扩展成Int32 也就是int
也就是说s1+1最后是int型 但左边是s1是short型 很明显一桶水倒到一杯水里会造成数据丢失 所以是错的
你必须要显示转换才可以
C# code
s1 = (short)(s1 = 1);