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

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

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

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

 инт фецлеарекцепт (инт изузеци);

Да би функција функционисала, требало би да омогућите ФЕНВ_АЦЦЕСС , што ће вашем програму омогућити приступ окружењу са покретном зарезом да би тестирао покренуте изузетке.

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

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

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

  • Функција фецлеарекцепт () враћа нулту вредност ако су сви изузеци обрисани или ако је изузеци једнак нули.
  • Враћа нула ако се деси било каква грешка.

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

 #include #include #include #pragma STDC FENV_ACCESS ON using namespace std; int main() ( // clears all exceptions feclearexcept(FE_ALL_EXCEPT); cout << "1/0 = " << 1.0/0.0 << endl; // tests if above statement raised the FE_DIVBYZERO exception if(fetestexcept(FE_DIVBYZERO)) ( cout << "FE_DIVBYZERO is set" << endl; ) else ( cout << "FE_DIVBYZERO is not set" << endl; ) feclearexcept(FE_ALL_EXCEPT); cout << "sqrt(-1) = " << sqrt(-1) << endl; if(fetestexcept(FE_INVALID)) ( cout << "FE_INVALID is set" << endl; ) else ( cout << "FE_INVALID is not set" << endl; ) )

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

 1/0 = инф ФЕ_ДИВБИЗЕРО је постављен скрт (-1) = -нан ФЕ_ИНВАЛИД је постављен

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