Funktionen fesetenv () i C ++ forsøger at indstille flydepunktsmiljøet fra det givne markørobjekt af typen fenv_t.
Funktionen fesetenv () er defineret i header-fil.
fesetenv () prototype
int fesetenv (fenv_t * envp);
Funktionen fesetenv () forsøger at indstille flydepunktsmiljøet fra det objekt, som envp peger på. Værdien af envp skal tidligere opnås ved et kald til feholdexcept eller fegetenv eller være en makrokonstant med flydende punkt.
fesetenv () Parametre
- envp: Markør til et objekt af typen fenv_t, der gemmer status for flydende punktmiljø.
fesetenv () Returværdi
- Efter succes returnerer funktionen fesetenv () 0.
- Ved fejl returnerer den ikke-nul.
Eksempel: Hvordan fungerer fesetenv ()?
#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; ) void print_current_rounding_direction() ( cout << "Current rounding method: "; switch (fegetround()) ( case FE_TONEAREST: cout << "FE_TONEAREST"; break; case FE_DOWNWARD: cout << "FE_DOWNWARD"; break; case FE_UPWARD: cout << "FE_UPWARD"; break; case FE_TOWARDZERO: cout << "FE_TOWARDZERO"; break; default: cout << "unknown"; ); cout << endl; ) void print_environment() ( print_exceptions(); print_current_rounding_direction(); ) int main(void) ( cout << "Initial environment " << endl; print_environment(); fenv_t envp; /* Save current environment */ fegetenv(&envp); feraiseexcept(FE_INVALID|FE_DIVBYZERO); fesetround(FE_DOWNWARD); cout << "After changing environment " << endl; print_environment(); /* Restores previous environment */ fesetenv(&envp); cout << "Restoring initial environment " << endl; print_environment(); return 0; )
Når du kører programmet, vil output være:
Oprindeligt miljø Hævede undtagelser: Ingen Aktuel afrundingsmetode: FE_TONEAREST Efter ændring af miljø Hævede undtagelser: FE_DIVBYZERO FE_INVALID Nuværende afrundingsmetode: FE_DOWNWARD Gendannelse af oprindeligt miljø Hævede undtagelser: Ingen Nuværende afrundingsmetode: FE_TONEAREST