2015-01-08 91 views
1

剛剛開始編程C++,並停留在下面的代碼上。在Ubuntu終端我嘗試用#define和一元'*'的無效類型參數(有'雙')

g++ -o circleArea circleArea.cpp 

編譯我的錯誤:

circleArea.cpp: In function ‘int main()’: 
circleArea.cpp:14:14: error: invalid type argument of unary ‘*’ (have ‘double’) 
    area = PI * r * r; 
      ^

的代碼是:

#include <iostream> 

using namespace std; 

#define PI 3.14159; 
#define newLine "\n"; 

int main(void) 
{ 
    double r; 
    double area; 
    cout << "Please enter the radius : "; 
    cin >> r; 
    area = PI * r * r; 
    cout << "Area is " << area << " unit squares" << newLine; 
} 

如果更換行「面積= PI * R * R 「with」area = 3.14159 * r * r「我沒有收到任何錯誤。有什麼問題,你能幫忙嗎?

謝謝

+1

你認爲'area = PI; * r * r;'是嗎? – juanchopanza

+0

試圖用PI * r * r計算面積,對嗎? – SoajanII

+1

仔細閱讀! – juanchopanza

回答

6

隨着#define PI 3.14159;

area = PI * r * r; 

成爲

area = 3.14159; * r * r; 

3.14159* r之間的額外;。這就像

area = 3.14159; 
* r * r; 

,因此第一*被視爲一元引用操作。 您應該在宏定義結束時刪除分號。

+0

謝謝,那是一個noob錯誤.. – SoajanII

相關問題