C++ 每次运行程序时我都会"nan"输出的问题
C++ Problem I get "nan" as output everytime I run my program
我需要创建一个程序,该程序具有将英尺高度更改为米高度的功能。我做了这个函数,当我从函数中得到正确的值时,我得到了正确的值,但是当我在 main 中 cout 它时,我得到了"nan"。我不明白为什么值不打印。这是我第一次使用这个网站,所以如果我错过了什么,我很抱歉。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double heightInMeters(double feet , double inches)
{
double footToMeter = 0.305;
double inchToMeter = 0.0254;
double heightInMeters = ((footToMeter * feet) + (inchToMeter * inches));
cout << heightInMeters << endl;
}
int main()
{
double feet, inches, calcheight;
char ch;
cout << "Enter your height [Use format ft-in]: ";
cin >> feet >> ch >> inches;
calcheight = heightInMeters(feet, inches);
cout << calcheight << endl;
return 0;
}
这个函数在这里:
double heightInMeters(double feet , double inches)
{
double footToMeter = 0.305;
double inchToMeter = 0.0254;
double heightInMeters = ((footToMeter * feet) + (inchToMeter * inches));
cout << heightInMeters << endl;
}
不返回任何内容。这是未定义的行为,你在这里得到什么
calcheight = heightInMeters(feet, inches);
那么很可能只是一些无效的垃圾值。也许代替这个:
cout << heightInMeters << endl;
你想要这个:
return heightInMeters;
编译器是否对代码发出任何警告?如果没有,请尝试确定是否可以将其设置为给您更多警告。大多数编译器通常会抱怨缺少返回。
heightInMeters
没有显式return
值。
因此,由于它不是一个void
函数(或main
(,程序的行为是未定义的。
你的编译器没有警告你吗?对于编译器来说,这是一个很容易在您的情况下做出的地方,如果您适当地调高警告级别,当前的编译器都会发出警告。
(当然,NaN是这种未定义行为的特殊表现。
最后,请注意,一英尺正好是 0.3048 米。您的转化指标据此。您的值引入了不必要的不精确性。
void f()
{
double a=0.3;
cout << a << endl;
}
//
// inside main function
f();
double f()
{
double a=0.3;
return a;
}
// inside main function
cout << f() << endl;
由于未指定代码的返回值,因此输出为"nan">
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 输出是NaN,如何
- 为什么我在输出端得到 nan?
- C++ 每次运行程序时我都会"nan"输出的问题
- 如何在 c++ 中处理 -nan 输出
- 程序输出"nan"
- 尝试在数组(C )中找到平均值时,获取-NAN(IND)输出
- 为什么该浮点联盟的输出是NAN的
- C++,在输出时将NaN移动到数组的末尾
- 如何让所有平台编译器为 NaN 输出相同的字符串
- 计算输出=nan