Csharp/C#教程:递增超出整数限制的整数值 – C#分享


递增超出整数限制的整数值 – C#

我有一个for循环,它继续递增一个整数值,直到循环完成。 因此,如果限制n是双变量并且递增变量’i’是整数,则i增加超出其限制。

double total = 0; double number = hugetValue; for (int i = 1; i <= number; i++) { total = total + i; } return total; 

如果’i’超过其容量,会发生什么? 我的价值如何变化? 我会收到运行时错误吗?

谢谢

NLV

类似于C的一些实现中的行为,其中int只是从INT_MAX回绕到INT_MIN(尽管根据ISO标准它实际上是未定义的行为),C#也包装。 在VS2008中测试它:

 int x = 2147483647; if (x+1 < x) { MessageBox.Show("It wrapped..."); } 

将导致消息框显示。

如果你的hugetValue大于最大int值,那么你的循环将永远运行。

例如,如果它是2147483648 ,就像你认为你接近它一样, int2147483647回绕到-2147483648并且循环继续前进。

抱歉,如果这看起来很粗鲁,但你会通过自己尝试来学到更多。

编辑:啊哈,所以你尝试了,并得到了意想不到的结果。 正如其他地方所解释的那样,类C语言倾向于安静地包装整数运算。 如果检查溢出的成本很高,那实际上这是一个非常合理的行为。 一旦你知道这可能会发生一个代码,特别是在你的例子中观察构造的类型。

如果需要exception,请提供已checked编译器选项,或使用C#中提供的已checked构造。

上述就是C#学习教程:递增超出整数限制的整数值 – C#分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1016600.html

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐