2 u012585224 u012585224 于 2014.07.24 13:11 提问

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个回答

u010136832
u010136832   2014.07.24 17:12
已采纳

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

u012585224
u012585224 哦,的确是欠考虑了,谢谢
3 年多之前 回复
lxq_xsyu
lxq_xsyu   Rxr 2014.12.10 19:54

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!