Maison > développement back-end > C++ > Comment gérer correctement les erreurs de division par zéro en C ?

Comment gérer correctement les erreurs de division par zéro en C ?

Mary-Kate Olsen
Libérer: 2024-12-11 20:29:11
original
938 Les gens l'ont consulté

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

Attraper l'exception Divide by Zero

Lorsque vous essayez de diviser par zéro en C, il n'est pas automatique pour le compilateur ou le runtime de lever une exception . Le comportement n'est pas défini, ce qui signifie qu'il pourrait entraîner une exception ou un autre résultat imprévisible.

Dans l'extrait de code fourni :

int i = 0;

cin >> i;

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

    cerr << e.what();
}
Copier après la connexion

Le code n'attrapera aucune exception lors d'une tentative de division par zéro car la division entière par zéro n'est pas considérée comme une exception dans la norme C.

Pour gérer cela, vous devez vérifier manuellement la condition de division par zéro et lancer une exception en conséquence. La norme C ne définit pas explicitement d'exception pour la division par zéro, vous pouvez donc choisir de lever une exception telle que :

  • std::overflow_error : car un débordement peut se produire lorsque La virgule flottante IEEE754 génère l'infini pour diviser par zéro.
  • std::domain_error : Comme cela indique un problème avec la valeur d'entrée (c'est-à-dire le dénominateur zéro).

Voici un extrait de code modifié qui montre le lancement d'une exception de division par zéro :

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;
}
Copier après la connexion

Dans ce Par exemple, la fonction intDivEx vérifie la division par zéro et renvoie une exception std::overflow_error si elle est rencontrée. Cela vous permet de gérer l'exception dans votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal