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

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

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

прототип фесетекцептфлаг ()

 инт фесетекцептфлаг (цонст фекцепт_т * флагп, инт изузеци);

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

Ова функција само модификује заставице и не доводи до изузетака.

параметри фесетекцептфлаг ()

  • флагп: Показивач на фекцепт_т објекат одакле ће се заставе читати.
  • изузеци: Битмаск списак заставица за изузеће које треба поставити.
Битмаск је прихватио макронаредбе
Макро Тип Опис
ФЕ_ДИВБИЗЕРО Погрешка пола Дељење са нулом
ФЕ_ИНЕКСАЦТ Нетачно Нису тачни резултати као што је (1.0 / 3.0)
ФЕ_ИНВАЛИД Грешка домена Најмање један коришћени аргумент је вредност за коју функција није дефинисана
ФЕ_ОВЕРФЛОВ Грешка у опсегу преливања Резултат је превелике величине да би га могао представити тип повратка
ФЕ_УНДЕРФЛОВ Грешка опсега подлива Резултат је премале величине да би га могао представити тип повратка
ФЕ_АЛЛ_ЕКСЦЕПТ Сви изузеци Сви изузеци подржани имплементацијом

фесетекцептфлаг () Повратна вредност

  • Функција фесетекцептфлаг () враћа нулу на успех, у супротном није нула.

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

 #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; ) int main() ( fexcept_t excepts; feraiseexcept(FE_DIVBYZERO); /* save current state*/ fegetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); feraiseexcept(FE_INVALID|FE_OVERFLOW); print_exceptions(); /* restoring previous exceptions */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); return 0; )

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

 Повећани изузеци: ФЕ_ДИВБИЗЕРО Повећани изузеци: ФЕ_ДИВБИЗЕРО ФЕ_ИНВАЛИД ФЕ_ОВЕРФЛОВ Повећани изузеци: ФЕ_ДИВБИЗЕРО

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