ホームページ >バックエンド開発 >C++ >C でゼロ除算例外を適切に処理する方法

C でゼロ除算例外を適切に処理する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 02:54:42727ブラウズ

How to Gracefully Handle Divide-by-Zero Exceptions in C  ?

ゼロ除算例外の処理

C の整数にはネイティブ例外サポートがありません。したがって、提供されているコード スニペットでは、

int i = 0;

cin >> i;  // Input might be zero

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

    cerr << e.what();
}

入力がゼロの場合、例外がトリガーされるのではなく、未定義の動作が発生します。このようなシナリオを処理するには、チェックを実行して例外を明示的にスローする必要があります。

次のコードでは、intDivEx メソッドを使用してゼロ除算の例外を処理します。

#include <iostream>
#include <stdexcept>

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

int main() {
    int i = 42;

    try {
        i = intDivEx(10, 0);
    } catch (std::overflow_error &e) {
        std::cout << e.what() << " -> ";
    }
    std::cout << i << std::endl;

    try {
        i = intDivEx(10, 2);
    } catch (std::overflow_error &e) {
        std::cout << e.what() << " -> ";
    }
    std::cout << i << std::endl;

    return 0;
}

このコード演算を実行する前にゼロ除算をチェックします。例外が発生した場合は、エラー メッセージが出力されます。それ以外の場合は、実行を継続します。

以上がC でゼロ除算例外を適切に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。