2013-10-02 71 views
2

在下面的代碼。爲什麼這個程序沒有顯示任何錯誤?

  • 我已經定義函數原型與定義以及在函數調用我已經使用一個參數沒有參數

我想知道爲什麼我沒有得到任何錯誤?

# include <stdio.h> 
float circle();  /* no parameter*/ 
int main() 
{ 
    float area; 
    int radius =2; 
    area=circle(radius); 
    printf("%f \n",area); 
    return 0; 
} 

float circle(r) /* with one parameter even no parameter type */ 
{ 
    float a; 
    a=3.14*r*r; 
    return (a); 
} 
+0

不要硬編碼PI。使用math.h中的M_PI。編輯:其實我不認爲這是標準C.所以先檢查。 – Bathsheba

回答

4

float circle(); 

不具有零組的參數的函數。這是一個具有未指定數量參數的函數。

float circle(r) { 

是K & R-樣式定義,其中的r默認類型int。見https://stackoverflow.com/a/18433812/367273

+0

現在唯一的問題是,如果'浮動(INT)'是一樣的'浮動(...)''那裏...'指的參數數目不詳。 – RedX

2

這是因爲編譯器默認把rint當沒有參數的定義circle。嘗試在聲明函數原型後運行代碼爲

float circle(void); 

並且您將收到錯誤消息。

0

這是因爲功能

float circle(); 

聲明不聲明函數不帶參數。
它隱含聲明爲取整數變量作爲自變量的不確定數的函數。
就像

function(); 

是有效的函數聲明。隱含此功能將被視爲功能以int作爲參數和返回int
如果你想聲明的功能函數沒有參數或不返回任何值,你void關鍵字做到這一點:

void funct(void); 
相關問題