关于c语言的函数声明

应用函数求5!+16!+27!。
#include<stdio.h>
main()
{
float jiec(); /*被调函数声明*/
printf("%e\n",jiec(5)+jiec(16)+jiec(27));
}
float jiec(int n)
{
float y=1;int i;
for(i=1;i<=n;i++)
y=y*i;
return(y);
}

#include<stdio.h>
float jiec(int n)
{
float y=1;int i;
for(i=1;i<=n;i++)
y=y*i;
return(y);
}
main()
{
printf("%e\n",jiec(5)+jiec(16)+jiec(27));
}
为什么上面那个要函数声明才可以运算正确,然则把自定义函数放到主函数之上不用声明也可以,是不是自定义函数在主函数之上就不用声明,而在主函数之下就要声明了?初学者,请多多体谅!

函数声明它为编译器提供了有用的信息,编译器在翻译代码的过程中,只有见到函数原型(这里即可以是声明也可以是定义)之后才知道这个函数的名字、参数类型和返回值,这样碰到函数调用时才知道怎么生成相应的指令,所以函数原型必须出现在函数调用之前,这也是遵循“先声明后使用”的原则。

注意上面说的函数原型是包括函数声明和定义两种形式的。

另外还有一种特殊情况,就是
隐式声明:
隐式声明的函数返回值类型都是int;
如下
#include<stdio.h>
main()
{

printf("%d\n",jiec(5));
}
int jiec(int n)
{
int y=1;int i;
for(i=1;i<=n;i++)
y=y*i;
return(y);
}
这个程序也是可以运行的。主要返回值为int.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-24
你的说法是正确的,如果你定义在主函数之内,它就像是一个变量一样,你要先告诉编译系统,这个是你写的函数,但是如果写在主函数上,因为你已经直接定义了一个外部函数,他并不是从属于主函数,就没有必要声明了,因为你声明了,编译系统已经在你定义的时候知道这是外部函数的写法,并在主函数可以直接使用,如果在主函数里面不声明,编译系统就不知道这究竟是函数,还是非法定义的变量了…
第2个回答  2010-05-24
c语言的执行顺序,在主函数之上,是用作定义一个函数,函数定义了,在主函数中不用声明;然则,函数在主函数里面,那么就要在之前声明该函数,否则程序运行至函数时,C语言不能区分其是函数还是一般的执行语句。
第3个回答  2010-05-24
对啊,这个本来就是这样的,编译时是顺序编译的,如果你的函数定义在调用的下面,而又不声明的话,那调用的代码就不知道你调用的函数是什么了,这个你随便找本c语言教程都会说的
第4个回答  2010-05-24
因为函数jiec()是你自己定义并编辑的,在C语言中凡是操作员自己定义的函数都要在使用前申明,在C语言中系统自带的函数是通过include语句进行引用定义的,比如字符函数通过include<string.h>进行申明,即你要引用的字符函数都在string.h里定义了
相似回答