2013-03-01 33 views
-3

我真的不明白,我的代碼有什麼問題。我以前做過類似的事情,並沒有出現編譯錯誤。我有一個代碼:爲什麼函數編譯器看不到'unsigned int'?

double shape(int i,double x) 
{ 
    double fun,h,L; 
    int n; 
    n=100; 
    L=1.0; 
    h=L/n; 
    x=x-i*h; 
    x=fabs(x); 
    if(x<=h) 
    fun=(1.0-x/h); 
    else 
    fun=0.0; 
    return fun; 
} 

void main() 
{ 
    int N=101; 
    double O,F,h; 
    h=0.001; 
    for(int i=0;i<N;i++) 
    { 
     F=h*(i+1); 
     O=shape(i,F); 
    } 
} 

並在最後一行它給了我編譯錯誤: 錯誤:發現「無符號整型」預期的雙重 警告:丟失的樣機。 爲什麼?

+0

把分號放到你的2條語句中h = 0.001;和O = shape(i,F); – 999k 2013-03-01 11:25:18

+0

對不起,我在那裏有一個分號。 – 2013-03-01 11:26:32

+0

你必須學會​​縮進你的代碼。 – 2013-03-01 11:26:33

回答

0

Error: found 'unsigned int' expected a double Warning: missing prototype.

這表明您正在調用一個沒有原型的函數。當發生這種情況時,編譯器會採用默認的返回值類型unsigned int。解決方案是添加缺少的原型。

您發佈的代碼不完整。看起來對shape的呼叫觸發了錯誤。但是shape是明確定義的。實際代碼shape中的很可能是在不同的文件中,或者首先在main下面聲明。

您應該配置您的編譯器,以便在函數尚未聲明時不會接受函數調用。 C語言接受這種事物的事實可以追溯到語言的早期階段。你應該配置你的編譯器來禁止這些古老和不好的做法。

您的程序在運行時會在您編譯時失敗。您將在main的循環中溢出F

最後,您的main函數聲明不正確。它應該是

int main(void) 
+1

AAAAAAH!我發現了錯誤!我的代碼中還有一個無符號變量'shape'!愚蠢的我!對不起,非常感謝你的幫助! – 2013-03-01 11:44:31

+0

我希望下次發佈您的真實代碼而不是僞造代碼。 – 2013-03-01 11:46:48

+0

整個代碼很長... – 2013-03-01 11:53:52

相關問題