C ++ fegetexceptflag () - Perpustakaan Standard C ++

Fungsi fegetexceptflag () dalam C ++ mendapat bendera pengecualian titik apungan yang ditentukan kecuali argumen, dan menyimpannya pada titik yang ditentukan oleh flagp

Fungsi fetgetexceptflag () ditentukan dalam fail tajuk.

prototaip fegetexceptflag ()

 int fegetexceptflag (fexcept_t * flagp, int kecuali);

Pengecualian argumen mungkin sedikit ATAU makro pengecualian titik terapung.

Parameter fegetexceptflag ()

  • flagp: Penunjuk ke objek fexcept_t di mana bendera akan disimpan.
  • kecuali: Senarai bitmask bendera pengecualian yang dapat diperoleh.
Makro yang diterima Bitmask
Makro Jenis Penerangan
FE_DIVBYZERO Kesalahan tiang Pembahagian dengan sifar
FE_INEXACT Tidak tepat Hasil yang tidak tepat seperti (1.0 / 3.0)
FE_INVALID Kesalahan domain Sekurang-kurangnya satu argumen yang digunakan adalah nilai yang fungsinya tidak ditentukan
FE_OVERFLOW Kesalahan julat limpahan Hasilnya terlalu besar dalam ukuran untuk ditunjukkan oleh jenis pengembalian
FE_UNDERFLOW Kesalahan julat aliran bawah Hasilnya terlalu kecil pada skala besar untuk diwakili oleh jenis pengembalian
FE_ALL_EXCEPT Semua pengecualian Semua pengecualian disokong oleh pelaksanaan

fegetexceptflag () Nilai pulangan

  • Fungsi fegetexceptflag () mengembalikan sifar kejayaan, bukan sifar sebaliknya.

Contoh: Bagaimana fungsi fegetexceptflag () berfungsi?

 #include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) int main() ( fexcept_t excepts; feraiseexcept(FE_DIVBYZERO); /* save current state*/ fegetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); feraiseexcept(FE_INVALID|FE_OVERFLOW); print_exceptions(); /* restoring previous exceptions */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); return 0; )

Semasa anda menjalankan program, outputnya adalah:

 Pengecualian yang dinaikkan: FE_DIVBYZERO Pengecualian yang dinaikkan: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Pengecualian yang meningkat: FE_DIVBYZERO

Artikel menarik...