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
Freigeben: 2024-12-11 20:29:11
Original
1005 Leute haben es durchsucht

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();
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage