读书人

short i=零;i+=1;这不报错为什么

发布时间: 2012-11-09 10:18:48 作者: rapoo

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); 

读书人网 >C#

热点推荐