我可以将int
设为NaN
吗?如果是,那么如何检查int
是否为NaN
?
答案 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
}