以下是for
循环的简单代码。理论上,在for
循环之后,i
的值应该增加到1但值不会增加; i
在循环后也保留值0。你能告诉我这背后的原因吗?
Integer j = 0;
Integer i = 0;
for(; i < m_ParticleNum; ++i)
{
if(m_aOutputParticleID[i] < 0 )
{
m_aOutputParticleID[i] = i;
m_aOutputParticlePosition[i] = bucket[j].Position;
m_aOutputParticleVelocity[i] = bucket[j].Velocity;
m_aOutputParticlePressure[i] = bucket[j].Pressure;
m_aOutputParticleDensity[i] = bucket[j].Density;
m_aOutputParticleTemperature[i] = bucket[j].Temperature;
m_aOutputParticleKineticViscosity[i] = bucket[j].KineticViscosity;
m_aOutputParticleSolidPhaseRate[i] = bucket[j].SolidPhaseRate;
m_aOutputParticleType[i] = bucket[j].Type;
j++;
}
}
答案 0 :(得分:1)
如果m_ParticleNum
的值为0,则循环不执行,因此i
的值保持为0.
答案 1 :(得分:0)
我在循环后的任何计算或输出中使用的值是什么?
如果您只是使用调试器检查我,可能会对其进行优化,因此它不会保留值。无法保证编译器必须在未使用的变量中保留值。
此外,如果有任何范围检查会导致循环退出并出现异常,则会绕过循环底部的增量。
最后,因为我是一个用户提供的类Integer,所以有些讨厌的人可能已经定义了它的运算符,因此++运算符被设计破坏/禁用,并且没有递增值。
我们真的需要看看你在循环和Integer类型的声明后如何评估i,以便能够提供更好的诊断。