Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 增量在C+中工作不正常+;_C++ - Fatal编程技术网

C++ 增量在C+中工作不正常+;

C++ 增量在C+中工作不正常+;,c++,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_aOut

下面是
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++;
    }
}
整数j=0;
整数i=0;
对于(;i
如果
m_ParticleNum
的值为0,则循环不会执行,因此
i
的值保持为0。

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

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

此外,如果正在进行任何范围检查,导致循环异常退出,则循环底部的i增量将被忽略

最后,由于我是一个用户提供的类整数,有可能是某个讨厌的人定义了它的运算符,因此设计破坏/禁用了++运算符,并且没有增加该值


我们确实需要了解在循环和整数类型声明之后如何计算i,以便能够提供更好的诊断。

什么是
m_ParticleNum
?当您到达
for
循环时,您确定条件
i
为真吗?要清楚,这里的
整数是什么?这是G++类还是其他类?m_particle有一些值,程序进入循环,但的值不增加。这也取决于什么是
Integer
。它是某种类型的
int
的typedef还是别的什么?@SubashShrestha
m_particleNum
的值是什么?如果
i
不增加,你会有一个无限循环,但是你从来没有提到过循环是无限的0@SubashShrestha:那么也许你应该显示它的声明和初始化,这样我们就知道了。Integer的声明是typedef int Integer@Subashsrestha:那
typedef
有什么作用?