Heim >Backend-Entwicklung >C++ >Wie gehe ich mit Division-durch-Null-Fehlern in C richtig um?

Wie gehe ich mit Division-durch-Null-Fehlern in C richtig um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 20:29:11951Durchsuche

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

Ausnahme „Dividieren durch Null“ abfangen

Beim Versuch, in C durch Null zu dividieren, löst der Compiler oder die Laufzeitumgebung nicht automatisch eine Ausnahme aus . Das Verhalten ist undefiniert, was bedeutet, dass es zu einer Ausnahme oder einem anderen unvorhersehbaren Ergebnis führen kann.

Im bereitgestellten Codeausschnitt:

int i = 0;

cin >> i;

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

    cerr << e.what();
}

Der Code fängt beim Versuch einer Teilung keine Ausnahmen ab durch Null, da eine ganzzahlige Division durch Null in Standard-C nicht als Ausnahme betrachtet wird.

Um dies zu handhaben, müssen Sie manuell nach der Bedingung „Dividieren durch Null“ suchen und eine auslösen Ausnahme entsprechend. Der C-Standard definiert nicht explizit eine Ausnahme für die Division durch Null, daher können Sie eine Ausnahme auslösen wie:

  • std::overflow_error: Da ein Überlauf auftreten kann, wenn IEEE754-Gleitkomma generiert Unendlich für die Division durch Null.
  • std::domain_error: Wie angegeben ein Problem mit dem Eingabewert (d. h. Nenner Null).

Hier ist ein modifizierter Codeausschnitt, der das Auslösen einer Division durch Null-Ausnahme demonstriert:

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

In diesem Beispiel ist die Die intDivEx-Funktion prüft auf Division durch Null und löst bei Auftreten eine std::overflow_error-Ausnahme aus. Dadurch können Sie die Ausnahme in Ihrem Code behandeln.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Division-durch-Null-Fehlern in C richtig um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn