不管怎样,这是怎么回事?我做一个简单的乘法:
Int64 x = 11111111111;
Int64 y = 11111111111;
Int64 z = x * y;在乘法的末尾,z显示一个值:
-5670418394979206991
这显然已经溢出,但没有引发异常。我想养一个但是..。
请注意,这是在Windows phone7上,但我不认为这对这个问题有任何影响。或者真的是这样?
发布于 2010-05-29 17:23:52
您可以使用其他答案已经指出的选中块:
checked
{
long x = 11111111111;
long y = 11111111111;
long z = checked(x * y);
// ...
}这会导致一个异常:
OverflowException:算术运算导致溢出。
如果您只是在执行需要检查的单个操作,则可以使用checked expression:
long x = 11111111111;
long y = 11111111111;
long z = checked(x * y);您还可以将/checked compiler option设置为选中默认值。
在Visual Studio开发环境中设置此编译器选项的
:
的检查
如果将缺省值更改为已检查,则可以使用未检查的块或表达式再次获取未检查的行为。
发布于 2010-05-29 17:16:40
checked
{
Int64 x = 11111111111;
Int64 y = 11111111111;
Int64 z = x * y;
}发布于 2010-05-29 17:17:18
尝试:
checked
{
Int64 x = 11111111111;
Int64 y = 11111111111;
Int64 z = x * y;
}https://stackoverflow.com/questions/2934467
复制相似问题