增量在C ++中无法正常工作

时间:2014-08-14 02:31:58

标签: c++

以下是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++;
    }
}

2 个答案:

答案 0 :(得分:1)

如果m_ParticleNum的值为0,则循环不执行,因此i的值保持为0.

答案 1 :(得分:0)

我在循环后的任何计算或输出中使用的值是什么?

如果您只是使用调试器检查我,可能会对其进行优化,因此它不会保留值。无法保证编译器必须在未使用的变量中保留值。

此外,如果有任何范围检查会导致循环退出并出现异常,则会绕过循环底部的增量

最后,因为我是一个用户提供的类Integer,所以有些讨厌的人可能已经定义了它的运算符,因此++运算符被设计破坏/禁用,并且没有递增值。

我们真的需要看看你在循环和Integer类型的声明后如何评估i,以便能够提供更好的诊断。