FE_ALL_EXCEPT 不等于按位或其他异常

问题描述

我正在尝试将 EA61 设置为对除 feenableexceptFE_INEXACT 之外的所有内容抛出异常。

但是,如果我使用 FE_UNDERFLOW,下溢仍然会引发异常。如果我改为使用 feenableexcept( FE_ALL_EXCEPT & ~FE_INEXACT & ~FE_UNDERFLOW ),那么他们不会。

我认为这些是等价的,但在我的编译代码中,似乎 feenableexcept( FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW ) 等于 FE_ALL_EXCEPT。前者的值为 FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW | FE_INEXACT | FE_UNDERFLOW,后者的值为 63(从下面的代码片段中获取的值)。

是否还有我遗漏的 61 异常宏?有什么方法可以查看或打印列表吗?使用 FE_ 似乎对我有用,但我想了解两者之间的区别。

编译器:英特尔(Intel(R) C++ g++ 4.8 模式)

C++ 版本:C++11

feenableexcept( FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)