Η συνάρτηση fesetexceptflag () σε C ++ ορίζει καθορισμένες σημαίες εξαίρεσης κινούμενου σημείου από ένα αντικείμενο δείκτη στο περιβάλλον κινητού σημείου.
Η συνάρτηση fesetexceptflag () ορίζεται στο αρχείο κεφαλίδας.
πρωτότυπο fesetexceptflag ()
int fesetexceptflag (const fexcept_t * flagp, int kecuali)
Η συνάρτηση fesetexceptflag () επιχειρεί να αντιγράψει όλα τα περιεχόμενα των σημαιών εξαίρεσης κινητού σημείου που καθορίζονται από εξαιρέσεις από το flagp στο περιβάλλον κυμαινόμενου σημείου.
Αυτή η λειτουργία τροποποιεί μόνο τις σημαίες και δεν δημιουργεί εξαιρέσεις.
fesetexceptflag () Παράμετροι
- flagp: Ένας δείκτης σε ένα αντικείμενο fexcept_t από το οποίο θα διαβαστούν οι σημαίες.
- kecuali: Bitmask λίστα των σημαιών εξαίρεσης που θα οριστούν.
Μακροεντολή | Τύπος | Περιγραφή |
---|---|---|
FE_DIVBYZERO | Σφάλμα πόλου | Διαίρεση με το μηδέν |
FE_INEXACT | Ανακριβής | Δεν υπάρχουν ακριβή αποτελέσματα όπως (1.0 / 3.0) |
FE_INVALID | Σφάλμα τομέα | Τουλάχιστον ένα όρισμα που χρησιμοποιείται είναι μια τιμή για την οποία δεν έχει οριστεί η συνάρτηση |
FE_OVERFLOW | Σφάλμα υπερχείλισης | Το αποτέλεσμα είναι πολύ μεγάλο σε μέγεθος για να αναπαρασταθεί από τον τύπο επιστροφής |
FE_UNDERFLOW | Σφάλμα εύρους ροής | Το αποτέλεσμα είναι πολύ μικρό σε μέγεθος για να αναπαρασταθεί από τον τύπο επιστροφής |
FE_ALL_EXCEPT | Όλες οι εξαιρέσεις | Όλες οι εξαιρέσεις υποστηρίζονται από την εφαρμογή |
fesetexceptflag () Επιστροφή τιμή
- Η συνάρτηση fesetexceptflag () επιστρέφει μηδέν στην επιτυχία, μη μηδενικά.
Παράδειγμα: Πώς λειτουργεί η λειτουργία fesetexceptflag ();
#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