Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Ralat Bahagi-dengan-Sifar dengan Betul dalam C?

Bagaimana Mengendalikan Ralat Bahagi-dengan-Sifar dengan Betul dalam C?

Mary-Kate Olsen
Lepaskan: 2024-12-11 20:29:11
asal
1044 orang telah melayarinya

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

Menangkap Bahagi dengan Pengecualian Sifar

Apabila cuba membahagi dengan sifar dalam C , ia bukan automatik untuk pengkompil atau masa jalan membuang pengecualian . Tingkah laku tidak ditentukan, yang bermaksud ia boleh menyebabkan pengecualian atau hasil lain yang tidak dapat diramalkan.

Dalam coretan kod yang disediakan:

int i = 0;

cin >> i;

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

    cerr << e.what();
}
Salin selepas log masuk

Kod tidak akan menangkap sebarang pengecualian apabila cuba membahagikan dengan sifar kerana integer bahagi dengan sifar tidak dianggap sebagai pengecualian dalam standard C .

Untuk mengendalikan ini, anda perlu secara manual semak keadaan bahagi dengan sifar dan buang pengecualian sewajarnya. Piawaian C tidak mentakrifkan pengecualian secara eksplisit untuk bahagi dengan sifar, jadi anda boleh memilih untuk membuang pengecualian seperti:

  • std::overflow_error: Kerana limpahan boleh berlaku apabila Titik terapung IEEE754 menjana infiniti untuk bahagi dengan sifar.
  • std::domain_error: Kerana ia menunjukkan masalah dengan nilai input (iaitu, penyebut sifar).

Berikut ialah coretan kod yang diubah suai yang menunjukkan membaling bahagi dengan pengecualian sifar:

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;
}
Salin selepas log masuk

Dalam contoh ini, fungsi intDivEx menyemak pembahagian dengan sifar dan membuang pengecualian std::overflow_error jika ditemui. Ini membolehkan anda mengendalikan pengecualian dalam kod anda.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat Bahagi-dengan-Sifar dengan Betul dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan