首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-11-09 
short i0i+1这不报错为什么?像short i0ii+1就会报错。[解决办法]老问题以前回答过再次懒的写原帖:h

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

热点排行