9

有没有一种简单的方法来检查调试器中的 C++ 代码是否首次出现 NaN 值?

4

3 回答 3

10

答案在这里给出:https ://stackoverflow.com/a/5394095/1326595

只包括

#include <fenv.h>

并将以下行添加到代码中:

feenableexcept(FE_INVALID | FE_OVERFLOW);

调试器能够捕获信号并显示 NaN 的第一次出现。

于 2012-08-14T05:59:49.137 回答
5

根据 IEEE 标准,以下条件false适用于NaN's:

val == val

您可以使用它来触发断言或软件断点,但要注意编译器优化。可能在调试版本中它不会被优化掉

于 2012-08-13T12:13:38.740 回答
2

你可以放一个assert(val >= 0 || val <= 0)来捕捉一个 NaN

于 2012-08-13T12:03:49.130 回答