当前位置:  开发笔记 > 编程语言 > 正文

C++ if语句数学评估错误

如何解决《C++if语句数学评估错误》经验,为你挑选了1个好方法。

我有一个我认为是数学错误的东西,我不完全理解它为什么会发生.

if (mNextBottomIndex < mBlocks.size() - 1) {
  if (mBlocks[mNextBottomIndex + 1]->getGlobalPosition().y >= -mBlocks[mNextBottomIndex + 1]->getHeight()) {
    mBlocks[mNextBottomIndex + 1]->setAlpha(1.0f);
    mNextBottomIndex++;
  }
}

它正在评估inner if statement因为mBlocks.size() = 0mNextBottomIndex = 3(或mNextBottomIndex等于任何数字> 0).所以我的问题是,鉴于最后一句中的变量,它是如何过去的outer if statement?应用程序不在后台线程中处理这些变量,并且变量在之前和之后是相同的outer if statement

我纠正外if statement

if (mBlocks.size() != 0 && mNextBottomIndex < mBlocks.size() - 1) {
  if (mBlocks[mNextBottomIndex + 1]->getGlobalPosition().y >= -mBlocks[mNextBottomIndex + 1]->getHeight()) {
    mBlocks[mNextBottomIndex + 1]->setAlpha(1.0f);
    mNextBottomIndex++;
  }
}

它现在似乎没有崩溃.



1> ccpgh..:

mBlocks.size()是一个unsigned int.如果从值为0的无符号整数中减去1,它将下溢为一个大的正数.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有