VC ++ 2013中的整数比较不正确

时间:2014-12-09 18:41:14

标签: c++ visual-studio visual-c++ visual-studio-2013

显然92622454< 92622451

我只是调试我的程序,寻找我得到的数字低于我发现这个数字的原因。有谁知道这里发生了什么?

测试(92622454> = 92622451)本身正确地返回true,正如您在第三行中看到的那样,两个被比较的数字都是用相同的函数计算的(打击(攻击者,防御者,aStart).profit() )使用稍微不同的输入。它不仅仅是一个视觉错误,它们是给定输入的正确数字。

对于一些上下文,此功能试图通过改变使用的攻击单位的数量来找到最大的利润(在来自游戏Astro Empires的两个舰队之间的战斗中)。在这种情况下,1180720将是正确的数字,但因为它以某种方式错误地评估此整数比较,它使用1180711单位,这给出了略微不理想的结果。

92622454 <= 92622451

1 个答案:

答案 0 :(得分:1)

对我来说很好看。调试器说

if (92622451 >= 92622454)
{
    // Didn't get in here
}
else
{
    // Did get here!
}

这是正确的行为。 if语句中的表达式为false

可能是时候去喝杯咖啡了:))