2013-03-01 59 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

相关问题