39

我可以设置一个inttoNaN吗?如果是,那么我如何检查是否intNaN

4

5 回答 5

52

不,NaN 是一个浮点值。

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

编辑

标准说:

6.2.6.2 40) 填充位的某些组合可能会产生陷阱表示,例如,如果一个填充位是奇偶校验位。无论如何,除了作为异常条件(如溢出)的一部分之外,没有任何对有效值的算术运算可以生成陷阱表示,并且这不会发生在无符号类型中。

因此可能存在一些特定于实现的无效整数值,但没有定义生成它们的方法。

于 2010-10-16T15:17:49.803 回答
6

一般来说(据我所知,特别是在 C++ 的情况下):不

整数 NaN

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

于 2010-10-16T15:18:50.673 回答
4

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

int myfunc(args, int* realReturn);

返回的 int 是错误代码。

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

int myInt;
if (myFunc(args, &myInt) != 0) {
//handle error
}
于 2019-06-22T12:57:51.153 回答
2

Nan 没有任何特定的 int 值。人们通常做的是使用一些大整数来表示这个值。如果它是无符号整数,那么它通常使用-1。

于 2010-10-16T15:42:50.763 回答
1

不,您不能将 an 设置int为 NaN。

于 2010-10-16T15:18:09.637 回答