Ц ++ фесетенв () - Ц ++ стандардна библиотека

Функција фесетенв () у Ц ++ покушава да постави окружење са покретном зарезом из датог објекта показивача типа фенв_т.

Функција фесетенв () је дефинисана у датотеци заглавља.

прототип фесетенв ()

 инт фесетенв (фенв_т * енвп);

Функција фесетенв () покушава да постави окружење са покретном тачком из објекта на који указује енвп. Вредност енвп мора претходно да се добије позивом на фехолдекцепт или фегетенв или да буде макро константа са помичном тачком.

параметри фесетенв ()

  • енвп: Показивач на објекат типа фенв_т који чува статус окружења са покретном тачком.

фесетенв () Повратна вредност

  • У успеху, функција фесетенв () враћа 0.
  • У случају неуспеха, враћа се нула.

Пример: Како функционише функција фесетенв ()?

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

Када покренете програм, излаз ће бити:

 Почетно окружење Повећани изузеци: Нема Тренутни метод заокруживања: ФЕ_ТОНЕАРЕСТ Након промене окружења Повећани изузеци: ФЕ_ДИВБИЗЕРО ФЕ_ИНВАЛИД Тренутни метод заокруживања: ФЕ_ДОВНВАРД Обнављање почетног окружења Повећани изузеци: Нема Тренутни начин заокруживања: ФЕ_ТОНЕАРЕСТ

Занимљиви Чланци...