C ++中的整数可以是NaN吗?

时间:2010-10-16 15:16:46

标签: c++ nan

我可以将int设为NaN吗?如果是,那么如何检查int是否为NaN

5 个答案:

答案 0 :(得分:36)

不,NaN是一个浮点值。

int的每个可能值都是一个数字。

修改

标准说:

  

6.2.6.2 40)填充位的某些组合可能会产生陷阱   表示,例如,如果一个   填充位是奇偶校验位。   无论如何,没有算术运算   有效值可以生成陷阱   代表而不是作为其一部分   一种特殊情况,如   溢出,这不可能发生   无符号类型。

所以可能是某些特定于实现的无效整数值,但是没有定义生成它们的方法。

答案 1 :(得分:5)

Generally (and specifically in the case of C++, to the best of my knowledge): no

  

整数NaN

     

大多数固定大小的整数格式没有任何明确指示无效数据的方法。

答案 2 :(得分:1)

不,您无法将int设置为NaN。

答案 3 :(得分:1)

您没有任何特定的int值作为Nan。人们通常做的是使用一些大整数来表示这个值。如果它是unsigned int则通常使用-1。

答案 4 :(得分:0)

我认为处理失败的最合适的API是在您的api中返回第二个整数错误代码,例如:

int myfunc(args, int* realReturn);

返回的int是错误代码。

先前的输出作为调用代码中的指针传递:

int myInt;
if (myFunc(args, &myInt) != 0) {
//handle error
}