0
点赞
收藏
分享

微信扫一扫

.NET算术运算溢出问题


 .NET中对算术运算溢出的处理是很灵活的,默认不检查溢出与否,例如以下代码:

int i = 2000000000;

 

                     int j = 2000000000;

 

                     int k = i + j;


k将会得到结果:-294967296,显然是运算溢出了。


 


我们可以使用关键字checked强制编译环境对算术运算溢出进行检查,如下代码:


 

try

 

             {

 

                 checked

 

                 {

 

                     int i = 2000000000;

 

                     int j = 2000000000;

 

                     int k = i + j;

 

                     this.textBox1.Text = k.ToString();

 

                 }

 

             }

 

             catch (Exception e1)

 

             {

 

                 MessageBox.Show(e1.Message);

 

             }


此时将会得到一个算术运算溢出的异常:OverflowException,我们可以使用此类替换Exception类。


 


我们亦可以通过项目的属性设置使得整个项目都对算术运算溢出进行检查,设置方法:


 


项目属性面板->生成->高级,在高级生成设置中选择“检查运算上溢/下溢”。如图:


 

这样设置以后编译器将会对项目内的所有代码进行溢出检查。


 


如果其中部分代码不需要检查,则可以使用unchecked关键字,取消代码的溢出检查。如下代码:

unchecked

 

                 {

 

                     int i = 2000000000;

 

                     int j = 2000000000;

 

                     int k = i + j;

 

                     this.textBox1.Text = k.ToString();

 

                 }


上述代码中k将会得到结果:-294967296。


 


 


 

举报

相关推荐

0 条评论