C语言 菜鸟题

#include<stdio.h>intjs(inta){intsum=0;for(;a>0;a--)sum=sum+a;returnsum;}voidmain(){fl... # include <stdio.h>
int js(int a)
{
int sum=0;
for(;a>0;a--)
sum=sum+a;
return sum;
}
void main ()
{
float y;
y=(js(3)+js(4)+js(5))/(js(6)+js(7));
printf("%f\n",y);
}
y明明是浮点型 可结果咋是零呢?
展开
 我来答
colmebaby
2010-06-08
知道答主
回答量:19
采纳率:0%
帮助的人:18.8万
展开全部
因为你的那条赋值语句中,等号右边是两个整型进行运算,最终结果也一定是整型(这与等号左边的y无关),而且计算结果是小与1的液和小数,故取整后只能是零。

计算结果是根据所有参与运算数的类型来判断最终结果的类型的,原则是两两运算时尽量保持最大精度,而刚才的那行运算均为整型,故结果也只能是整型。

你可以这样试试:y=(js(3)+js(4)+js(5))/((float)js(6)+js(7));
将js(6)的结果转换成迟旁浮点型(转换任意一个都行)闹旦盯,编译器为了保证最大精度,结果会以浮点型保存并显示。
知识海洋的小学徒
2010-06-08 · TA获得超过889个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:430万
展开全部
y=(float)(js(3)+js(4)+(float)js(5))/(js(6)+js(7));
这样改一下,
int a,b;
.....
a/b得到败谨握的仍然察庆是整数,需晌谨要先把一个转换为float或者double就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白马相思白发生b
2010-06-08 · TA获得超过1752个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:909万
展开全部
float js(int a)就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式