一尘不染

C#中的int是否没有溢出异常?

c#

我在Euler项目(顺便说一句,很棒的网站)上遇到了第10个问题的怪异经历。任务是计算低于200万的所有素数之和。

我使用一个整数作为总和,我的算法产生了一个答案,但是当我粘贴它以验证答案时,这是错误的。

原来,结果太大而无法放入int中,但这是否会导致溢出错误或其他原因?相反,它只是返回了一个与实际答案相差很远的值。

当我将类型更改为long时,一切都是笨拙的。


阅读 322

收藏
2020-05-19

共1个答案

一尘不染

默认情况下,C#整数运算不会在溢出时引发异常。您可以通过项目设置或进行以下计算来实现checked

int result = checked(largeInt + otherLargeInt);

现在该操作将抛出。

相反的是unchecked,这使得任何操作都被显式取消。显然,这仅在项目设置中启用了选中的操作时才有意义。

2020-05-19