C ++ fesetenv () - C ++ Standart Kitaplığı

C ++ 'daki fesetenv () işlevi, belirli fenv_t türündeki işaretçi nesnesinden kayan nokta ortamını ayarlamaya çalışır.

Fesetenv () işlevi başlık dosyasında tanımlanmıştır.

fesetenv () prototipi

 int fesetenv (fenv_t * envp);

Fesetenv () işlevi, envp ile gösterilen nesneden kayan nokta ortamını ayarlamaya çalışır. Envp değeri önceden bir feholdexcept veya fegetenv çağrısı ile elde edilmeli veya bir kayan noktalı makro sabiti olmalıdır.

fesetenv () Parametreler

  • envp: Kayan noktalı ortamın durumunu saklayan fenv_t türünde bir nesnenin işaretçisi.

fesetenv () Dönüş değeri

  • Başarı durumunda, fesetenv () işlevi 0 döndürür.
  • Başarısızlık halinde sıfırdan farklı bir değer döndürür.

Örnek: fesetenv () işlevi nasıl çalışır?

 #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; )

Programı çalıştırdığınızda, çıktı:

 Başlangıç ​​ortamı Yükseltilmiş istisnalar: Yok Mevcut yuvarlama yöntemi: FE_TONEAREST Ortamı değiştirdikten sonra Yükseltilmiş istisnalar: FE_DIVBYZERO FE_INVALID Mevcut yuvarlama yöntemi: FE_DOWNWARD Başlangıç ​​ortamını geri yükleme Yükseltilmiş istisnalar: Yok Mevcut yuvarlama yöntemi: FE_TONEAREST

Ilginç makaleler...