C ++ fesetenv () - C ++ Standardbibliotek

Fesetenv () -funktionen i C ++ försöker ställa in flytpunktsmiljön från det givna pekarobjektet av typen fenv_t.

Funktionen fesetenv () definieras i rubrikfilen.

fesetenv () prototyp

 int fesetenv (fenv_t * envp);

Funktionen fesetenv () försöker ställa in den flytande punktmiljön från det objekt som envp pekar på. Värdet på envp måste tidigare erhållas genom ett anrop till feholdexcept eller fegetenv eller vara en flytande makrokonstant.

fesetenv () Parametrar

  • envp: pekare till ett objekt av typen fenv_t som lagrar statusen för den flytande punktmiljön.

fesetenv () Returvärde

  • Efter framgång returnerar funktionen fesetenv () 0.
  • Vid fel returnerar den noll.

Exempel: Hur fungerar 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ör programmet blir resultatet:

 Ursprunglig miljö Upphöjda undantag: Ingen Nuvarande avrundningsmetod: FE_TONEAREST Efter ändrad miljö Upphöjda undantag: FE_DIVBYZERO FE_INVALID Aktuell avrundningsmetod: FE_DOWNWARD Återställa ursprunglig miljö Upphöjda undantag: Ingen Nuvarande avrundningsmetod: FE_TONEAREST

Intressanta artiklar...