我遇到了一个整数环绕其最小值意外的问题。意外的整数环绕
整数的值为15,然后包装到-858993460。
这是导致该问题的代码:http://codepad.org/tZerX1wC
(在这里,它被复制 - 这是不大)
while(ArrayLocation2 < EmpArray2Size)
{
GivenEmployees[(*EmployeeSize++)] = curr2;
prev2 = curr2;
if(ArrayLocation2 < EmpArray2Size)
{
curr1 = EmpArray2[ArrayLocation2];
}
ArrayLocation2++;
if((ArrayLocation2 >= EmpArray2Size) || (prev2.HourlyRate > curr2.HourlyRate))
{
subFiles++;
}
}
如果我手动更改它需要的值(16, 17,18等),它按预期工作。
大小声明为“int Size = 21;”并作为&传递到当前的方法,如果它有所作为。
是否有可能得到一个详细的答案,为什么会发生这种情况?
如果需要,我可以提供更多细节。
谢谢。
哪个整数?代码中有很多可能性。每个人如何初始化?你正在研究哪个系统? 0xCCCCCCCC在你的程序或系统中有什么意义? – 2011-03-14 06:27:11
我为代码中的不一致道歉 - 包装的整数是“EmployeeSize”,并按照我在OP中描述的那样进行声明。每次它通过这个方法都会被重置为0,并且每次它增加1,当它达到15时,它会再次增加一次。我正在开发64位Windows 7系统,intel i5。 – Matt 2011-03-14 06:27:55
检查你没有通过任何参考通过它? – deek0146 2011-03-14 06:31:25