【问题标题】:if statement not resolving despite condition being met C++尽管满足条件 C++,if 语句仍无法解析
【发布时间】:2016-02-27 15:41:31
【问题描述】:

我正在完成一项大学作业,我必须在其中重新创建经典的 Frogger 游戏。轮胎运动有问题。

for (int tZ = 0; tZ < kTyreColumnLength; tZ++)
{
    for (int tX = 0; tX < kTyreRowLength; tX++)
    {
        eachTyre = tX + tZ;
        tyre[eachTyre] = tyreMesh->CreateModel(0, -2.50, 0);
        tyre[eachTyre]->Scale(10);
        tyre[eachTyre]->SetX(tyreXs[tX]);
        tyre[eachTyre]->SetZ(tyreZs[tZ]);

        if (tZ % 2 == 0)
        {
            tyreMovingLeft[eachTyre];
        }
    }

}

基本上,我绘制轮胎的方式是通过嵌套的 for 循环。内圈抽3个轮胎,每行重复一次(外圈)

然后我尝试分配每个“偶数”行轮胎,一个布尔值来跟踪其方向。

tZ % 2 ==0 每次外部循环迭代时都正确解析为真/假,调试器说条件满足,但它永远不会执行。

【问题讨论】:

  • 你没有对 tyreMovingLeft 做任何事情
  • 我是,只是在我的代码中更进一步。根据调试器的问题
  • 你怎么知道“它永远不会执行”?它没有什么可以执行的......

标签: c++ if-statement


【解决方案1】:

您实际上从未执行过分配,您只是为您的数组编制了索引。

tyreMovingLeft[eachTyre];

你可能是说

tyreMovingLeft[eachTyre] = true;

【讨论】:

  • 虽然如果tyreMovingLeftbool 的映射,那么结果已经是tyreMovingLeft[eachType] = false;。与往常一样,该问题不包含 MCVE,因此我们无法可靠地回答它。
【解决方案2】:

问题是内部块没有任何作用:

 tyreMovingLeft[eachTyre];

所以它被编译器优化了。你不是说一些赋值或将结果传递给某个函数吗?

【讨论】:

  • 虽然如果tyreMovingLeftbool 的映射,那么结果就是tyreMovingLeft[eachType] = false;。与往常一样,该问题不包含 MCVE,因此我们无法可靠地回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 2021-05-22
相关资源
最近更新 更多