C++ 如何在C+中检测/捕获-1.#IND+;
我已经尝试了所有检测奇数(NaN、QNaN等)的常规技巧,但我似乎无法检测到-1。#IND.如果您能提供任何帮助,我将不胜感激。试试以下方法:C++ 如何在C+中检测/捕获-1.#IND+;,c++,visual-studio-2010,debugging,error-handling,numbers,C++,Visual Studio 2010,Debugging,Error Handling,Numbers,我已经尝试了所有检测奇数(NaN、QNaN等)的常规技巧,但我似乎无法检测到-1。#IND.如果您能提供任何帮助,我将不胜感激。试试以下方法: 您是否尝试过将数字与自身进行比较: if ( x != x ) assert(!"nan"); 或者干脆 assert(x==x); 你通常的花招是什么 此外,奇数是1,3,5,…,如中所示,与偶数相反。你说的是NaN,我猜。union\u IEEESingle union _IEEESingle { float Float; st
您是否尝试过将数字与自身进行比较:
if ( x != x )
assert(!"nan");
或者干脆
assert(x==x);
你通常的花招是什么
此外,奇数是1,3,5,…,如中所示,与偶数相反。你说的是NaN,我猜。union\u IEEESingle
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);
}
{
浮动;
结构
{
无符号整数分数:23;
无符号整数表达式:8;
无符号整数符号:1;
}IEEE;
};
布尔·伊斯克南(浮入)
{
返回(重新解释和输入)->IEEE.Exp==(1u IEEE.Frac);
}
也可能重复,请注意,@Cheers and hth.-Alf的答案在标记的副本中是正确的。谢谢-我们可以关闭此副本。我尝试将其与自身进行比较…适用于NaN、QNan和INF…而不是IND…@Luchian-他的意思是奇怪/不正常中的奇怪