c++ 从输出接收"-1.#IND"?
c++ Receiving "-1.#IND" from output?
这里非常简单的问题:当我测试错误的数据输入时,我给出了一条错误消息,但之后出现 -1.#IND?
例如,我在应该有正数的地方输入一个负数,然后得到"错误的输入假人-1.#IND">
#include "Header.h"
void error_rep(){
cout<<"Wrong input dummy";
}
double ctok(double c){
double j = c *273.15;
if (j >= -273.15){
return j;
}
else
error_rep();
}
int main(){
double c = 0;
cin >> c;
double k = ctok(c);
cout<<k<<endl;
keep_window_open();
}
这意味着什么?为什么会出现呢?我该如何摆脱它?
这是什么意思?
这是微软语,意思是"不是一个数字"。这意味着k
不是有效的浮点数。
为什么会出现呢?
当范围测试失败时,不会返回值。这给出了未定义的行为;实际上,这可能等同于返回一个未平凡的值,这很可能是垃圾。如果启用了适当的警告,编译器应就此发出警告。
我该如何摆脱它?
我会通过抛出异常来报告错误;如果函数失败,则任何内容都无法尝试使用无效的返回值。或者,您可以返回具有可测试"无效"状态的类型,例如 boost::optional<double>
或 std::pair<double, bool>
,并在使用前对其进行测试。
顺便说一下,如果这应该是将摄氏度转换为开尔文,那么你想要加上 273.15,而不是乘以它;并在转换后与零进行比较(或者如果你愿意,在转换前与 273.15 进行比较(。
一个打开所有警告的好编译器,会说执行路径没有返回......,
double ctok(double c){
double j = c *273.15;
if (j >= -273.15){
return j;
}
else {
error_rep();
///here
throw ;//somthing
}
}
和 CTOK 呼叫周围的尝试捕获异常
-1.#IND 表示双精度值为"负不确定 NaN"。基本上,存储的值不能表示为双精度中的数字。
请参阅 http://blogs.msdn.com/b/oldnewthing/archive/2013/02/21/10395734.aspx
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 尝试在数组(C )中找到平均值时,获取-NAN(IND)输出
- c++ 从输出接收"-1.#IND"?
- BOOST库逆输出-1.#IND
- 什么是-1.#IND平均值(双流输出)