fegetexceptflag() function in C/C++
The fegetexceptflag() function in C/C++ is specified in header file fenv.h and gets floating point exception flags. This function store the raised exception in the point specified by flagp .
Syntax:
int fegetexceptflag(fexcept_t* flagp, int excepts)
Parameters: The function accepts two mandatory parameters which are described below:
- flagp : signifies the pointer to a fexcept_t object where the representation is stored.
- excepts : signifies the bitmask value.
Macro –> Description:
- FE_DIVBYZERO –> Pole error: Division by zero.
- FE_INEXACT –> Inexact: The result is not exact.
- FE_INVALID –> Domain error: At least one of the arguments is a value for which the function is not defined.
- FE_OVERFLOW –> Overflow range error: The result is too large.
- FE_UNDERFLOW –> Underflow range error: The result is too small.
- FE_ALL_EXCEPT –> All exceptions.
Return value : The function returns two value as below:
- Zero: on success.
- Non-zero: on failure
Below programs illustrate the above function:
Program 1 :
#include <bits/stdc++.h>
using namespace std;
int main()
{
fexcept_t excepts;
feraiseexcept(FE_DIVBYZERO);
fegetexceptflag(&excepts, FE_ALL_EXCEPT);
cout << "Exception raised -> \n" ;
if (fetestexcept(FE_ALL_EXCEPT)) {
if (fetestexcept(FE_DIVBYZERO))
cout << "FE_DIVBYZERO \n" ;
if (fetestexcept(FE_INEXACT))
cout << "FE_INEXACT \n" ;
if (fetestexcept(FE_INVALID))
cout << "FE_INVALID \n" ;
if (fetestexcept(FE_OVERFLOW))
cout << "FE_OVERFLOW \n" ;
if (fetestexcept(FE_UNDERFLOW))
cout << "FE_UNDERFLOW \n" ;
if (fetestexcept(FE_ALL_EXCEPT))
cout << "FE_ALL_EXCEPT \n" ;
}
else
cout << "None" ;
return 0;
}
|
Output:
Exception raised ->
FE_DIVBYZERO
FE_ALL_EXCEPT
Program 2 :
#include <bits/stdc++.h>
using namespace std;
int main()
{
fexcept_t excepts;
feraiseexcept(FE_ALL_EXCEPT);
fegetexceptflag(&excepts, FE_ALL_EXCEPT);
cout << "Exception raised -> \n" ;
if (fetestexcept(FE_ALL_EXCEPT)) {
if (fetestexcept(FE_DIVBYZERO))
cout << "FE_DIVBYZERO \n" ;
if (fetestexcept(FE_INEXACT))
cout << "FE_INEXACT \n" ;
if (fetestexcept(FE_INVALID))
cout << "FE_INVALID \n" ;
if (fetestexcept(FE_OVERFLOW))
cout << "FE_OVERFLOW \n" ;
if (fetestexcept(FE_UNDERFLOW))
cout << "FE_UNDERFLOW \n" ;
if (fetestexcept(FE_ALL_EXCEPT))
cout << "FE_ALL_EXCEPT \n" ;
}
else
cout << "None" ;
return 0;
}
|
Output:
Exception raised ->
FE_DIVBYZERO
FE_INEXACT
FE_INVALID
FE_OVERFLOW
FE_UNDERFLOW
FE_ALL_EXCEPT
Last Updated :
25 Sep, 2018
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...