Η συνάρτηση fegetexceptflag () στο C ++ λαμβάνει σημαίες εξαίρεσης κινούμενου σημείου που καθορίζουν το όρισμα, και την αποθηκεύει στο σημείο που καθορίζεται από το flagp.
Η συνάρτηση fetgetexceptflag () ορίζεται στο αρχείο κεφαλίδας.
πρωτότυπο fegetexceptflag ()
int fegetexceptflag (fexcept_t * flagp, int kecuali)
Το όρισμα εξαιρέσεις μπορεί να είναι λίγο αριστερά ή των μακροεντολών εξαίρεσης κινητού σημείου
παράμετροι fegetexceptflag ()
- flagp: Ένας δείκτης σε ένα αντικείμενο fexcept_t όπου θα αποθηκευτούν οι σημαίες.
- kecuali: 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