2016-06-14 18 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

不,接受答案並不能解決問題,這不是一個答案。但是這個問題應該並且已經被封閉,因爲不能滿足這個網站上這樣一個問題的要求。 –