救命啊!!!!!!!分析下个C程序 基础题

来源:百度知道 编辑:UC知道 时间:2024/04/27 16:49:49
1/2为什么对于0? 它是float 类型啊 又不是整型 不是0。5吗 ?

还有s2的结果为什么是9。000000啊?
main()
{
float a=2,b=4,h=3,s1,s2;
s1=(1/2)*(a+b)*h;
s2=h/2*(a+b);
printf("s1=%f\ns2=%f\n",s1,s2);
}
结果:s1=0.000000
s2=9.000000 为什么?

因为立即数默认是整型数啊, 你改成1.0/2.0就好了啊.
关于s2, 因为h被声明成浮点类型, 所以就按浮点运算了

s1=(1/2)*(a+b)*h
改成s1=(1.0/2)*(a+b)*h
1/2是整形的是0
0乘以任何数都是0
所以s1=0
s2按照顺序计算就是9.0