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还是别的什么?@SubashShrestham_particleNum
的值是什么?如果i
不增加,你会有一个无限循环,但是你从来没有提到过循环是无限的0@SubashShrestha:那么也许你应该显示它的声明和初始化,这样我们就知道了。Integer的声明是typedef int Integer@Subashsrestha:那typedef
有什么作用?