2013-10-02 70 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); 
相关问题