Умножение значений двойного типа дает случайный / мусорный ответ в выводе - PullRequest
2 голосов
/ 05 февраля 2012
#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 и пытался объявить переменную и делать месяцы = возраст * м, где м = 12,0, но результат тот же. Кстати, случайное значение примерно одинаково, независимо от того, какая переменная возраст. Почему это происходит? Кроме того, это будет ошибка времени соединения или ошибка времени выполнения?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Вы выполняете умножение, используя age до его инициализации.Какое значение вы ожидаете получить?

Измените код, чтобы сначала получить возраст, а затем выполните умножение:

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

cout << "Hello " << name << " age " << age << " (" << months << " months)\n";
2 голосов
/ 05 февраля 2012

Переместить вычисление months в после ввода возраста точки (age не было инициализировано в исходном коде):

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

months = age*12.0; 

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