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