gpt4 book ai didi

c++从输出中接收 "-1.#IND"?

转载 作者:行者123 更新时间:2023-11-30 02:52:02 24 4
gpt4 key购买 nike

这里很简单的问题:当我测试错误的数据输入时,我给出了一条错误消息,但是 -1.#IND 在它之后出现?

例如,我在应该是正数的地方输入了负数,结果出现“wrong input dummy-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();
}

这是什么意思?为什么会出现?我该如何摆脱它?

最佳答案

What does this mean?

在微软语中是“不是数字”的意思。这意味着 k不是有效的 float 。

and why is it coming up?

当范围测试失败时,您不会返回值。这给出了未定义的行为;实际上,它可能等同于返回一个未初始化的值,这很可能是垃圾。如果您启用了适当的警告,您的编译器应该警告您。

How do i get rid of it?

我会通过抛出异常来报告错误;那么如果函数失败,则没有任何东西可以尝试使用无效的返回值。或者,您可以返回具有可测试“无效”状态的类型,例如 boost::optional<double>std::pair<double, bool> ,并在使用前进行测试。

顺便说一下,如果这应该是将摄氏度转换为开尔文,那么您需要加上 273.15,而不是乘以它;并在转换后与零进行比较(如果您愿意,也可以在转换前与 273.15 进行比较)。

关于c++从输出中接收 "-1.#IND"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19277436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com