您的位置:程序门 -> .net技术 -> c#



请教一个简单的问题,数值运算中报the operation overflows at compile time in checked mode这个错


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教一个简单的问题,数值运算中报the operation overflows at compile time in checked mode这个错
发表于:2007-02-01 10:27:38 楼主

long   lb   =   11691846000000000   +   8   *   36000000000;//这句运行正常
但是如果写成   long   la   =   (1169184600   +   8   *   3600)   *   10000000   ;//这句就报错:the   operation   overflows   at   compile   time   in   checked   mode
另外请问unchecked有什么作用
我写成
unchecked
{
  long   la   =   (1169184600   +   8   *   3600)   *   10000000   ;   //虽然不报错但结果不是想要得到的
}
发表于:2007-02-01 11:15:321楼 得分:0
up
发表于:2007-02-01 11:22:092楼 得分:0
溢出!
unchecked编译时忽略溢出
发表于:2007-02-01 12:32:463楼 得分:0
(1169184600   +   8   *   3600)   *   10000000计算后的数值超出了long类型所能表示的最大类型,即int64.maxvalue.而在编译是使用checked模式,所以抱错,而使用unchecked模式后,在溢出的情况下也不错抱错,而得到的数值是一个截断后的值,就如时间一样,24点之后是1点,没有25点。
发表于:2007-02-01 13:45:404楼 得分:0
那如果要做这样的计算该怎么办
为什么使用long   lb   =   11691846000000000   +   8   *   36000000000;  
可以呢
发表于:2007-02-01 15:54:375楼 得分:0
帮顶了!


快速检索

最新资讯
热门点击