在下面的代码中。
我想知道为什么我没有收到任何错误?
# 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 :(得分: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);