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

Η συνάρτηση feupdateenv () αποθηκεύει πρώτα τις τρέχουσες εξαιρέσεις κυμαινόμενου σημείου, επαναφέρει το περιβάλλον κινητής υποδιαστολής από το δεδομένο αντικείμενο fenv_t και στη συνέχεια αυξάνει τις εξαιρέσεις που έχουν αποθηκευτεί προηγουμένως

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

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

 int feupdateenv (fenv_t * envp);

Η συνάρτηση feupdateenv () παίρνει ένα δείκτη του τύπου fenv_t ως επιχείρημά του, το οποίο διατηρεί ένα περιβάλλον κινητής υποδιαστολής που είχε οριστεί προηγουμένως χρησιμοποιώντας το feholdexcept ή fegetenv και επαναφέρει αυτό το περιβάλλον κινητής υποδιαστολής μαζί με το τρέχον περιβάλλον.

feupdateenv () Παράμετροι

  • envp: Δείκτης στο αντικείμενο fenv_t που έχει οριστεί από μια προηγούμενη κλήση στο feholdexcept ή fegetenv ή ισούται με FE_DFL_ENV.

feupdateenv () Τιμή επιστροφής

  • Με επιτυχία, η συνάρτηση feupdateenv () επιστρέφει 0.
  • Σε αποτυχία, επιστρέφει μη μηδέν.

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

 #include #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() ( fenv_t envp; /* raise certain exceptions */ feraiseexcept(FE_INVALID|FE_DIVBYZERO); print_exceptions(); /* saves and clears current exceptions */ feupdateenv(&envp); print_exceptions(); /* restores saved exceptions */ feupdateenv(&envp); print_exceptions(); return 0; )

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

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

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