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明明是浮点型 可结果咋是零呢? 展开
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明明是浮点型 可结果咋是零呢? 展开
3个回答
展开全部
因为你的那条赋值语句中,等号右边是两个整型进行运算,最终结果也一定是整型(这与等号左边的y无关),而且计算结果是小与1的液和小数,故取整后只能是零。
计算结果是根据所有参与运算数的类型来判断最终结果的类型的,原则是两两运算时尽量保持最大精度,而刚才的那行运算均为整型,故结果也只能是整型。
你可以这样试试:y=(js(3)+js(4)+js(5))/((float)js(6)+js(7));
将js(6)的结果转换成迟旁浮点型(转换任意一个都行)闹旦盯,编译器为了保证最大精度,结果会以浮点型保存并显示。
计算结果是根据所有参与运算数的类型来判断最终结果的类型的,原则是两两运算时尽量保持最大精度,而刚才的那行运算均为整型,故结果也只能是整型。
你可以这样试试:y=(js(3)+js(4)+js(5))/((float)js(6)+js(7));
将js(6)的结果转换成迟旁浮点型(转换任意一个都行)闹旦盯,编译器为了保证最大精度,结果会以浮点型保存并显示。
展开全部
y=(float)(js(3)+js(4)+(float)js(5))/(js(6)+js(7));
这样改一下,
int a,b;
.....
a/b得到败谨握的仍然察庆是整数,需晌谨要先把一个转换为float或者double就可以了
这样改一下,
int a,b;
.....
a/b得到败谨握的仍然察庆是整数,需晌谨要先把一个转换为float或者double就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float js(int a)就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询