C ++ fesetenv () - C ++ Standardbibliotek

Funksjonen fesetenv () i C ++ forsøker å stille inn flytepunktsmiljøet fra det gitte pekerobjektet av typen fenv_t.

Funksjonen fesetenv () er definert i topptekstfilen.

fesetenv () prototype

 int fesetenv (fenv_t * envp);

Funksjonen fesetenv () forsøker å sette flytepunktsmiljøet fra objektet pekt på av envp. Verdien av envp må tidligere oppnås ved et anrop til feholdexcept eller fegetenv eller være en makrokonstant med flytende punkt.

fesetenv () Parametere

  • envp: peker til et objekt av typen fenv_t som lagrer statusen til flytpunktmiljøet.

fesetenv () Returverdi

  • Ved suksess returnerer funksjonen fesetenv () 0.
  • Ved feil returnerer den null.

Eksempel: Hvordan fungerer funksjonen 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 kjører programmet, vil utdataene være:

 Opprinnelig miljø Opphevede unntak: Ingen Gjeldende avrundingsmetode: FE_TONEAREST Etter endring av miljø Opphevede unntak: FE_DIVBYZERO FE_INVALID Gjeldende avrundingsmetode: FE_DOWNWARD Gjenoppretter opprinnelig miljø Opphevede unntak: Ingen Gjeldende avrundingsmetode: FE_TONEAREST

Interessante artikler...