2012-02-05 72 views
2
#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 = 12.0但結果是相同的。順便說一下,無論年齡是多少,隨機值都差不多。這是爲什麼發生?此外,這是鏈接時錯誤還是運行時錯誤?乘以double類型值給出輸出

回答

4

你正在做使用age它的初始化之前的乘法。你期望它給你什麼樣的價值?

更改代碼先拿到年齡,然後做乘法:

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

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

移動的months計算爲輸入點年齡之後(age在原始代碼未初始化):

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

months = age*12.0; 

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