关于c语言的函数声明

应用函数求5!+16!+27!。#include<stdio.h>main(){floatjiec();/*被调函数声明*/printf("%e\n",jiec(5)+j... 应用函数求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));
}
为什么上面那个要函数声明才可以运算正确,然则把自定义函数放到主函数之上不用声明也可以,是不是自定义函数在主函数之上就不用声明,而在主函数之下就要声明了?初学者,请多多体谅!
展开
 我来答
huifeng00
推荐于2016-11-04 · TA获得超过5234个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:704万
展开全部
函数声明它为编译器提供了有用的信息,编译器在翻译代码的过程中,只有见到函数原型(这里即可以是声明也可以是定义)之后才知道这个函数的名字、参数类型和返回值,这样碰到函数调用时才知道怎么生成相应的指令,所以函数原型必须出现在函数调用之前,这也是遵循“先声明后使用”的原则。

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

另外还有一种特殊情况,就是
隐式声明:
隐式声明的函数返回值类型都是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.
徐光猪
2010-05-24 · TA获得超过4167个赞
知道大有可为答主
回答量:1299
采纳率:50%
帮助的人:1730万
展开全部
你的说法是正确的,如果你定义在主函数之内,它就像是一个变量一样,你要先告诉编译系统,这个是你写的函数,但是如果写在主函数上,因为你已经直接定义了一个外部函数,他并不是从属于主函数,就没有必要声明了,因为你声明了,编译系统已经在你定义的时候知道这是外部函数的写法,并在主函数可以直接使用,如果在主函数里面不声明,编译系统就不知道这究竟是函数,还是非法定义的变量了…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slllyy007
2010-05-24
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
c语言的执行顺序,在主函数之上,是用作定义一个函数,函数定义了,在主函数中不用声明;然则,函数在主函数里面,那么就要在之前声明该函数,否则程序运行至函数时,C语言不能区分其是函数还是一般的执行语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美丽生灵
2010-05-24 · TA获得超过455个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:171万
展开全部
对啊,这个本来就是这样的,编译时是顺序编译的,如果你的函数定义在调用的下面,而又不声明的话,那调用的代码就不知道你调用的函数是什么了,这个你随便找本c语言教程都会说的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangdeqing88
2010-05-24 · TA获得超过173个赞
知道答主
回答量:109
采纳率:100%
帮助的人:68.1万
展开全部
因为函数jiec()是你自己定义并编辑的,在C语言中凡是操作员自己定义的函数都要在使用前申明,在C语言中系统自带的函数是通过include语句进行引用定义的,比如字符函数通过include<string.h>进行申明,即你要引用的字符函数都在string.h里定义了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式