2016-03-15 71 views
-1

每次我運行下面的代碼時,都會得到相同的結果,這是一個錯誤,指出「直徑」是未初始化的局部變量。我需要的是在getDiam()函數中輸入的輸入被初始化爲直徑。 已經有幾種方法我已經嘗試做這另一種方式包括:初始化函數中局部變量的問題

double getDiam() 
{ 
double diameter; 
double input; 
cout << "Please enter the diameter of your floor: "; 
cin >> input; 
diameter = input; 
return diameter; 
} 

這^^沒有工作。

//prototypes 
double getDiam(); 
double calcSqFeet(double); 
const double PI = 3.14; 

int main() 
{ 
double diameter, 
     squareFeet; 

getDiam(); 
calcSqFeet(diameter); 

} 
double getDiam() 
{ 
double diameter = 0; 
cout << "Please enter the diameter of your floor: "; 
cin >> diameter; 
return diameter; 
} 

double calcSqFeet(double diameter) 
{ 
double radius = diameter/2; 
double squareFeet = PI * radius * radius; 
return squareFeet; 
} 
+0

請提取一個簡單的例子,你的問題是沒有它的話題。也就是說,在不同函數中聲明的名爲'diameter'的變量是不同的對象。即使調用兩次的同一函數中的變量也是不同的對象。 –

回答

2

的被傳遞給calcSqFeetdiameter不是正被拍攝的輸入相同diametermain中未使用從getDiam返回的值。

您應該將main中的getDiam呼叫更改爲diameter=getDiam();

+0

閱讀[範圍](http://en.cppreference.com/w/cpp/language/scope)。 – anukul

-1

如果您閱讀了警告消息(我懷疑這是一個錯誤,除非您啓用了「warnings as error」選項),您將看到函數在getDiam函數中沒有使用。它位於main函數中,在沒有初始化的情況下,您確實在調用calcSqfeet時使用同名變量diameter

您缺少的東西是將getDiam的結果賦值給main函數中的diameter變量。

要學的課:實際上總是編譯器給你的錯誤或警告信息。包括行號和潛在的功能名稱。幫助您找到錯誤/警告的實際位置。

第二課要學習:函數中的局部變量實際上只是該函數的局部變量。兩個名稱相同但功能不同的變量仍然是兩個不同的變量,彼此之間沒有任何聯繫。