问个简单的C语言,求大虾帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/23 15:21:49
include"math.h"
int main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);
printf("area=%7.2f\n",area);
return 0;
}
输入3,4,5
输出a=3.00,b=4.00,c=5.00
area=6.00
但当我把第6行的“s=1.0/2*(a+b+c);”换成“s=1/2*(a+b+c);”
同样输入3,4,5
但输出的是a=3.00,b=4.00,c=5.00
area=-0.00
为什么

1.0/2被当作浮点数运算来看待,所以结果是0.5,而1/2则被当作整数运算,结果会被去掉小数部分,作为整数看待,所以结果是0。

因为s=1/2*(a+b+c)中1/2==0;
而s=1.0/2*(a+b+c)中1.0/2.0==0.500000;
两个整型运算结果为整型!