c – 如何使用std :: signaling_nan?

前端之家收集整理的这篇文章主要介绍了c – 如何使用std :: signaling_nan?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在查看关于SO( Using NaN in C++)的另一个问题后,我对std :: numeric_limits< double> :: signaling_NaN()感到好奇.

我无法获得signaling_NaN抛出异常.我想也许通过发信号它真的意味着一个信号,所以我尝试捕捉SIGFPE但不是……

这是我的代码

double my_nan = numeric_limits<double>::signaling_NaN();
my_nan++;
my_nan += 5;
my_nan = my_nan / 10;
my_nan = 15 / my_nan;
cout << my_nan << endl;

numeric_limits< double> :: has_signaling_NaN的计算结果为true,因此它在我的系统上实现.

有任何想法吗?

我正在使用ms visual studio .net 2003的C编译器.我回家后想在另一个地方测试.

谢谢!

解决方法

您可以使用 _control87()函数启用浮点异常.从_control87()上的MSDN文档:

Note:

The run-time libraries mask all floating-point exceptions by default.

启用浮点异常时,可以使用signal()SEH (Structured Exception Handling)捕获它们.

原文链接:https://www.f2er.com/c/118590.html

猜你在找的C&C++相关文章