0

我用 C#(在 VS 2008 中)制作了一个计算器,但我不明白为什么

checked{iCurrent = (iCurrent * 10) + i;}

可以检查溢出,有人可以解释一下吗?谢谢。

这是我的代码:

 try
    {
         //get the typed
         long iCurrent=long.Parse(textOut.Text);
         if(bNumBegins)
         {
             iCurrent = i;
             bNumBegins = false;
         }
         else
         {
             //check whether overflow
             checked{iCurrent = (iCurrent * 10) + i;}
         }
         textOut.Text = iCurrent.ToString();
    }
4

2 回答 2

0

当您使用checked关键字时,您要求编译器自动生成代码,以测试算术运算后是否发生溢出。如果检测到溢出,OverflowException则抛出 an。

C# 中的默认设置是在执行算术运算时不检查此类溢出。可以更改默认值以检查所有操作。无论默认值如何,checkedandunchecked关键字都可用于根据需要有选择地检查或忽略溢出。

于 2013-11-15T06:53:27.413 回答
0

@DavidPilkington 是的,为什么需要 * 10?谢谢

我认为您在这里感到困惑。

代码将iCurrent变量乘以 10,然后加一。这是编码器想要的效果。checked关键字用于确保OverflowException没有.

*10检查是不需要的,对操作来说检查是“需要”的,以确保数量不会太大。

这是关于checked. 我建议你通读它和例子以获得更好的理解。

于 2013-11-15T07:25:02.807 回答