帮我看看结果不对

来源:百度知道 编辑:UC知道 时间:2024/06/20 16:37:31
#include <stdio.h>
#include <math.h>
#define S(a,b,c) (1/2*(a+b+c))
#define ARER(a,b,c) (sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)))
main()
{
float a,b,c,t,d;
scanf("%f%f%f",&a,&b,&c);
d=S(a,b,c);
t=ARER(a,b,c);
printf("%f %f\n",d,t);
}

能通过编译 但是结果都为0 和-0

#include <stdio.h>
#include <math.h>
#define S(a,b,c) (1.0/2*(a+b+c)) //此处注意1/2就等于0了,必须是小数才行
#define ARER(a,b,c) (sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)))
main()
{
float a,b,c,t,d;
scanf("%f%f%f",&a,&b,&c);
d=(float)S(a,b,c);
t=(float)ARER(a,b,c);
printf("%f %f\n",d,t);
}