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
937 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!

sumber:php.cn
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