为什么这个程序没有显示任何错误?

时间:2013-10-02 14:57:04

标签: c

在下面的代码中。

  • 我定义了没有参数的函数原型
  • 在定义和函数调用中我使用了一个参数。

我想知道为什么我没有收到任何错误?

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

3 个答案:

答案 0 :(得分:4)

float circle();

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

float circle( r) {

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

答案 1 :(得分:2)

这是因为在没有为r定义参数时,编译器默认将int视为circle。在将函数原型声明为

之后尝试运行代码
float circle(void);  

你会收到错误。

答案 2 :(得分:0)

那是因为功能

float circle();

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

function();

是有效的函数声明。隐式地将此函数视为将int作为参数并返回int的函数。
如果要声明函数函数不带参数或不返回任何值,可以使用void关键字来执行此操作:

void funct(void);