微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FE_ALL_EXCEPT 不等于按位或其他异常

如何解决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 举报,一经查实,本站将立刻删除。