C ++ fegetexceptflag () - C ++ Standart Kitaplığı

C ++ 'daki fegetexceptflag () işlevi, excepts bağımsız değişkeni belirtilen kayan nokta istisna bayraklarını alır ve flagp ile belirtilen noktada saklar.

Fetgetexceptflag () işlevi başlık dosyasında tanımlanmıştır.

fegetexceptflag () prototipi

 int fegetexceptflag (fexcept_t * flagp, int istisnaları);

Excepts argümanı, kayan nokta istisna makrolarının bitsel VEYA olabilir.

fegetexceptflag () Parametreler

  • flagp: Bayrakların saklanacağı fexcept_t nesnesine işaretçi.
  • excepts: Alınacak istisna bayraklarının bit maskesi listesi.
Bit maskesi makroları kabul etti
Makro Tür Açıklama
FE_DIVBYZERO Kutup hatası Sıfıra bölüm
FE_INEXACT Hatasız (1.0 / 3.0) gibi kesin sonuçlar değil
FE_INVALID Alan hatası Kullanılan en az bir argüman, işlevin tanımlanmadığı bir değerdir
FE_OVERFLOW Taşma aralığı hatası Sonuç, dönüş türüyle temsil edilemeyecek kadar büyüklükte
FE_UNDERFLOW Alt akış aralığı hatası Sonuç, dönüş türüyle temsil edilemeyecek kadar küçüktür
FE_ALL_EXCEPT Tüm istisnalar Uygulama tarafından desteklenen tüm istisnalar

fegetexceptflag () Dönüş değeri

  • Fegetexceptflag () işlevi başarı durumunda sıfır, aksi takdirde sıfır olmayan bir değer döndürür.

Örnek: fegetexceptflag () işlevi nasıl çalışır?

 #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; )

Programı çalıştırdığınızda, çıktı:

 Yükseltilmiş istisnalar: FE_DIVBYZERO Yükseltilmiş istisnalar: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Yükseltilmiş istisnalar: FE_DIVBYZERO

Ilginç makaleler...