乘以双精度值会在输出中给出随机/垃圾回答

时间:2012-02-05 03:54:12

标签: c++ double

#include <iostream>
#include <string>
using namespace std;

int main() {

double age;
double months;
string name;

months = age*12.0;

cout << "Enter your name and age: ";
cin >> name >> age;
cout << "Hello " << name << " age " << age << " (" << months << " months)\n";

return(0);
}

该计划要求姓名和年龄,并且应该将姓名和年龄放在括号中的月龄数月的句子中。 输出给出了类似于: 你好鲍勃20岁(1.82561e-313个月),但应该是你好鲍勃20岁(240个月)。我没有使用int因为我希望能够为年龄输入非int值。 我尝试了12而不是12.0并尝试声明一个变量并做数月=年龄* m,其中m = 12.0但结果是相同的。顺便说一下,无论变量年龄是多少,随机值都大致相同。为什么会这样?此外,这是链接时错误还是运行时错误?

2 个答案:

答案 0 :(得分:4)

在初始化之前,您正在使用age进行乘法运算。你期望它给你什么价值?

将代码更改为先获取年龄,然后进行乘法运算:

cout << "Enter your name and age: ";
cin >> name >> age;
months = age*12.0;

cout << "Hello " << name << " age " << age << " (" << months << " months)\n";

答案 1 :(得分:2)

months的计算移至输入点年龄后(age在原始代码中未初始化):

cout << "Enter your name and age: "; 
cin >> name >> age; 

months = age*12.0; 

cout << "Hello " << name << " age " << age << " (" << months << " months)\n";