C++中的feupdateenv()函数首先保存当前引发的浮点异常。它从给定的fenv_t对象还原浮点环境,然后引发先前保存的异常。
用法:
int feupdateenv( fenv_t* envp )
参数:它接受单个强制性参数envp,该参数指定指向fenv_t对象的指针,该指针由先前对feholdexcept或fegetenv的调用设置,或者等于FE_DFL_ENV。该函数还接受类型为fenv_t的指针作为其参数,该指针保存先前通过使用feholdexcept或fegetenv设置的浮点环境,并将该浮点环境与当前环境一起恢复。
返回值:该函数返回以下两种值:
- 成功返回零
- 失败时返回非零值
以下示例程序旨在说明上述函数。
示例1:
// C++ program to illustrate the
// feupdateenv() function
#include <bits/stdc++.h>
#pragma STDC FENV_ACCESS on
// Function to use the fucntion
double answer(double y)
{
// struct defined
fenv_t trial;
// use the function feholdexcept
feholdexcept(&trial);
// find log valye
y = log(y);
// clears exception
feclearexcept(FE_OVERFLOW | FE_DIVBYZERO);
// call the function for succes or not
feupdateenv(&trial);
return y;
}
int main()
{
// It is a combination of all of
// the possible floating-point exception
feclearexcept(FE_ALL_EXCEPT);
// it returns the log value
// if it is to be found
printf("log(0.0): %f\n", answer(0.0));
// the function does not throws any exception
if (!fetestexcept(FE_ALL_EXCEPT)) {
printf("no exceptions raised");
}
return 0;
}
输出:
log(0.0): -inf no exceptions raised
示例2:
// C++ program to illustrate the
// feupdateenv() function
#include <bits/stdc++.h>
#pragma STDC FENV_ACCESS on
// Function to use the fucntion
double answer(double y)
{
// struct defined
fenv_t trial;
// use the function feholdexcept
feholdexcept(&trial);
// find log valye
y = log(y);
// clears exception
feclearexcept(FE_OVERFLOW | FE_DIVBYZERO);
// call the function for succes or not
feupdateenv(&trial);
return y;
}
int main()
{
// It is a combination of all of
// the possible floating-point exception
feclearexcept(FE_ALL_EXCEPT);
// it returns the log value
// if it is to be found
printf("log(10.0): %f\n", answer(10.0));
// the function does not throws any exception
if (!fetestexcept(FE_ALL_EXCEPT)) {
printf("no exceptions raised");
}
else
printf("exceptions raised");
return 0;
}
输出:
log(10.0): 2.302585 exceptions raised
相关用法
- C++ div()用法及代码示例
- C++ fma()用法及代码示例
- C++ log()用法及代码示例
- C++ regex_iterator()用法及代码示例
- C++ isunordered()用法及代码示例
- C++ map key_comp()用法及代码示例
- C++ real()用法及代码示例
- C++ imag()用法及代码示例
- C++ valarray pow()用法及代码示例
注:本文由纯净天空筛选整理自AmanSrivastava1大神的英文原创作品 feupdateenv() function in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。