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);
}
4

3 回答 3

4

float circle();

不是零参数的函数。它是一个具有未指定数量的参数的函数。

float circle( r) {

是一个 K&R 风格的定义,其中的类型r默认为int. 见https://stackoverflow.com/a/18433812/367273

于 2013-10-02T14:58:49.163 回答
2

r这是因为编译器int在没有为circle. 将函数原型声明为后尝试运行代码

float circle(void);  

你会得到错误。

于 2013-10-02T14:59:00.183 回答
0

那是因为函数

float circle();

声明不声明不带参数的函数。
它被隐式声明为一个将未定义数量的整数变量作为参数的函数。
就像

function();

是有效的函数声明。隐含地,此函数将被视为以int参数为参数并返回的函数int
如果要声明不带参数或不返回任何值的函数函数,请使用void关键字:

void funct(void);
于 2013-10-02T15:07:20.207 回答