C ++ fegetexceptflag () - C ++ Τυπική βιβλιοθήκη

Η συνάρτηση fegetexceptflag () στο C ++ λαμβάνει σημαίες εξαίρεσης κινούμενου σημείου που καθορίζουν το όρισμα, και την αποθηκεύει στο σημείο που καθορίζεται από το flagp.

Η συνάρτηση fetgetexceptflag () ορίζεται στο αρχείο κεφαλίδας.

πρωτότυπο fegetexceptflag ()

 int fegetexceptflag (fexcept_t * flagp, int kecuali)

Το όρισμα εξαιρέσεις μπορεί να είναι λίγο αριστερά ή των μακροεντολών εξαίρεσης κινητού σημείου

παράμετροι fegetexceptflag ()

  • flagp: Ένας δείκτης σε ένα αντικείμενο fexcept_t όπου θα αποθηκευτούν οι σημαίες.
  • kecuali: Bitmask λίστα με σημαίες εξαίρεσης για λήψη.
Το Bitmask δέχτηκε μακροεντολές
Μακροεντολή Τύπος Περιγραφή
FE_DIVBYZERO Σφάλμα πόλου Διαίρεση με το μηδέν
FE_INEXACT Ανακριβής Δεν υπάρχουν ακριβή αποτελέσματα όπως (1.0 / 3.0)
FE_INVALID Σφάλμα τομέα Τουλάχιστον ένα όρισμα που χρησιμοποιείται είναι μια τιμή για την οποία δεν έχει οριστεί η συνάρτηση
FE_OVERFLOW Σφάλμα υπερχείλισης Το αποτέλεσμα είναι πολύ μεγάλο σε μέγεθος για να αναπαρασταθεί από τον τύπο επιστροφής
FE_UNDERFLOW Σφάλμα εύρους ροής Το αποτέλεσμα είναι πολύ μικρό σε μέγεθος για να αναπαρασταθεί από τον τύπο επιστροφής
FE_ALL_EXCEPT Όλες οι εξαιρέσεις Όλες οι εξαιρέσεις υποστηρίζονται από την εφαρμογή

fegetexceptflag () Επιστροφή τιμής

  • Η συνάρτηση fegetexceptflag () επιστρέφει μηδέν στην επιτυχία, μη μηδενικά.

Παράδειγμα: Πώς λειτουργεί η λειτουργία fegetexceptflag ();

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

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Αυξημένες εξαιρέσεις: FE_DIVBYZERO Αυξημένες εξαιρέσεις: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Αυξημένες εξαιρέσεις: FE_DIVBYZERO

ενδιαφέροντα άρθρα...