Функција фесетекцептфлаг () у Ц ++ поставља наведене заставе за изузеће са помичном тачком из објекта показивача у окружење са покретном тачком.
Функција фесетекцептфлаг () је дефинисана у датотеци заглавља.
прототип фесетекцептфлаг ()
инт фесетекцептфлаг (цонст фекцепт_т * флагп, инт изузеци);
Функција фесетекцептфлаг () покушава копирати сав садржај застава за изузеће са помичном тачком наведеном екцептс из флагп у окружење са помичном тачком.
Ова функција само модификује заставице и не доводи до изузетака.
параметри фесетекцептфлаг ()
- флагп: Показивач на фекцепт_т објекат одакле ће се заставе читати.
- изузеци: Битмаск списак заставица за изузеће које треба поставити.
Макро | Тип | Опис |
---|---|---|
ФЕ_ДИВБИЗЕРО | Погрешка пола | Дељење са нулом |
ФЕ_ИНЕКСАЦТ | Нетачно | Нису тачни резултати као што је (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; )
Када покренете програм, излаз ће бити:
Повећани изузеци: ФЕ_ДИВБИЗЕРО Повећани изузеци: ФЕ_ДИВБИЗЕРО ФЕ_ИНВАЛИД ФЕ_ОВЕРФЛОВ Повећани изузеци: ФЕ_ДИВБИЗЕРО