首頁 >後端開發 >C++ >如何正確處理 C 中的被零除錯誤?

如何正確處理 C 中的被零除錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 20:29:11939瀏覽

How to Properly Handle Divide-by-Zero Errors in C  ?

捕獲被零除異常

當嘗試在C 中除以零時,編譯器或運行時不會自動拋出異常。該行為未定義,這意味著它可能會導致異常或其他不可預測的結果。

在提供的程式碼片段中:

int i = 0;

cin >> i;

try {
    i = 5/i;
}
catch (std::logic_error e) {

    cerr << e.what();
}

嘗試除法時程式碼不會捕捉任何異常除以零,因為在標準 C 中整數除以零不被視為異常。

要處理此問題,您需要手動檢查除以零的條件並相應地拋出異常。 C 標準沒有明確定義除零的異常,因此您可以選擇拋出異常,例如:

  • std::overflow_error:因為溢位可能發生在下列情況IEEE754 浮點除以零會產生無窮大。
  • std::domain_error:因為它顯示輸入值(即零分母)有問題。

這是一個修改後的程式碼片段,示範拋出被零除異常:

int intDivEx(int numerator, int denominator) {
    if (denominator == 0)
        throw std::overflow_error("Divide by zero exception");
    return numerator / denominator;
}

try {
    i = intDivEx(5, 0);  // Will throw an overflow_error exception
} catch (std::overflow_error &amp;e) {
    cerr << e.what() << endl;
}

在此例如,intDivEx 函數檢查是否被零除,如果遇到則拋出std::overflow_error 異常。這允許您處理程式碼中的異常。

以上是如何正確處理 C 中的被零除錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn