分不清正数负数,是我错了,还是VS.NET错了
三年前做的一个ASP.NET的项目(www.SurveyStar.net),一直运行好好的,
前几天,客户打电话来说,出了问题。
反复跟踪,发现是一个正数、负数的判断与ToString()的问题。
将问题简化后,源程序可表示为只有4句的程序,如下:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
按理说,这里的if(a<0) a=-a 应当将之转成了正数,但是问题来了:
如果在前面加上了str1一句,或者后面加上了str2一句,或者前后都加上,
显示的a居然是负数 -1944930248。这真是一个奇怪的问题。
是我错了,还是微软错了?
我查看了IL代码,没有找到问题,不知有无高人能指出其中的原因。
附:IL代码1:
![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |