2016-06-14 42 views
-3

我的代码在这里抛出一个浮点异常,但我找不出原因。看起来没有理由的浮点异常

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; 
} 

目标是简化一小部分。正如你所看到的,事物只能通过我和我> 1进行修改。同样适用于划分。奇怪的是,即使我在while循环中注释掉代码,它仍然会抛出错误,但是如果我完全摆脱了while循环,代码就可以正常工作。当我尝试使用for循环时,发生了同样的事情。我错过了什么?

+6

请删除所有'this - >'s。他们毫无意义和分心。 –

+0

循环入口有多大'i',以及'* this'的值是多少?那么,“分子”和“分母”的类型是什么? – davidbak

+3

显示不起作用的完整代码示例。 –

回答

1

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

那么你的问题不是在这个联盟的代码。到目前为止,我编译并运行时没有错误。

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

。然后,很可能你是这个联盟的代码,使浮点异常后做可变i东西。

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

+0

你是对的。它告诉我在不同的成员函数中存在错误。谢谢! (一个完全不同的块,不包含我,因为我不会在范围内,虽然) –

+0

对,然后接受答案来关闭问题。 – shrike

+0

不,接受答案并不能解决问题,这不是一个答案。但是这个问题应该并且已经被封闭,因为不能满足这个网站上这样一个问题的要求。 –