NLV*_*NLV 13 c# integer-overflow
我有一个for循环,它一直递增一个整数值,直到循环完成.因此,如果限制n是双变量并且递增变量'i'是整数,则i增加超出其限制.
double total = 0;
double number = hugetValue;
for (int i = 1; i <= number; i++)
{
total = total + i;
}
return total;
Run Code Online (Sandbox Code Playgroud)
如果'i'超出其容量,会发生什么?我的价值如何变化?我会收到运行时错误吗?
谢谢
NLV
pax*_*blo 11
类似于C的一些实现中的行为,其中int刚刚从INT_MAX回绕到INT_MIN(尽管根据ISO标准它实际上是未定义的行为),C#也包装.在VS2008中测试它:
int x = 2147483647;
if (x+1 < x) {
MessageBox.Show("It wrapped...");
}
Run Code Online (Sandbox Code Playgroud)
将导致消息框显示.
如果你的hugetValue值大于最大值int,那么你的循环将永远运行.
例如,如果它是2147483648,就像你认为你正在接近它一样,int从2147483647回到包围-2147483648并且循环继续前进.
| 归档时间: |
|
| 查看次数: |
9948 次 |
| 最近记录: |