生风虎
2014-07-24 05:11
采纳率: 100%
浏览 4.8k

c语言中函数返回值类型的问题

看一道改错题:
#include
#include
#include
proc(int k)//很显然根据主调函数和返回值类型知道这里缺少类型
{
int n;float s,w,p,q;
n=1;
s=1.0;
while(n<=k){
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
return s;
}
void main(){
system("CLS");
printf("%f\n",proc(20));
}
我觉得既然变量s是float型,就应该改成float proc(int k)。可是本题的答案确实这样子改的 double proc(int k)我想问答案这样改对吗?如果对道理是什么?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 小邓在路上 2014-07-24 09:12
    已采纳

    你的想法是没错,但是你要看你具体的函数的内部的操作啊 ,你的被调函数里面有一个语句是:s=s*w*w/p/q;
    你能确定 计算完了这个s还在float 的范围内吗,为了防止数字的越界问题,返回值就设置成立double 就是为了安全的考虑。

    已采纳该答案
    打赏 评论
  • lxq_xsyu 2014-12-10 11:54

    c语言的自动类型转换,返回的是一个临时变量,会被转成double

    打赏 评论

相关推荐 更多相似问题