如何在C ++中检测/捕获-1。#IND

时间:2012-03-12 14:00:25

标签: c++ visual-studio-2010 debugging error-handling numbers

我已经尝试了所有检测奇数的常规技巧(NaN,QNaN等),我似乎无法检测到-1。#IND。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

您是否尝试将数字与自身进行比较:

if ( x != x )
   assert(!"nan");

或只是

assert(x==x);

你的常规技巧是什么?

另外,奇数是1,3,5,......,与偶数相反。你在谈论NaN我的假设。

答案 2 :(得分:0)

union _IEEESingle
{
   float Float;
   struct
   {
      unsigned int Frac : 23;
      unsigned int Exp  : 8;
      unsigned int Sign : 1;
   } IEEE;
};    

bool isQnan(float in) 
    { 
       return(reinterpret_cast<_IEEESingle*>(&in)->IEEE.Exp == (1u << 8)-1 && 
          reinterpret_cast<_IEEESingle*>(&in)->IEEE.Frac); 
    }