看似没有理由的浮点例外

时间:2016-06-14 21:42:08

标签: c++

我的代码在这里给我一个浮点异常,但我无法弄明白为什么。

int i = this -> numerator;
while(i > 1){
    if ((this -> numerator % i == 0) && (this -> denominator % i == 0)) {
        this -> numerator = this -> numerator / i;
        this -> denominator = this -> denominator / i;
    }
    i = i - 1;
}

目标是简化分数。正如你所看到的,事情只能通过i和i来模拟。同样适用于分裂。奇怪的是,即使我在while循环中注释掉代码,它也会继续抛出错误,但如果我完全摆脱while循环,代码工作正常。当我尝试使用for循环时,同样的事情发生了。我错过了什么?

1 个答案:

答案 0 :(得分:1)

  

奇怪的是,即使我在while循环中注释掉代码,它也会继续抛出错误,

然后你的问题不在这个代码块中。到目前为止,我编译并运行时没有错误。

  

但如果我完全摆脱while循环,代码就可以正常工作

然后,在这个使得浮点异常的代码块之后,你可能正在使用变量i做一些事情。

使用调试器运行代码以检查它失败的位置。