为什么出现这样的结果
#include<stdio.h>#include<math.h>
#define s (a+b+c)/2
#define q %f
main()
{
double a,b,c;
scanf("q q q",&a,&b,&c);
printf("q",sqrt(s*(s-a)*(s-b)*(s-c)));
}
#include<stdio.h>
#include<math.h>
#define s (a+b+c)/2
main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
printf("%lf",sqrt(s*(s-a)*(s-b)*(s-c)));
}
都输入3 4 5 第一个结果为 运行完后的结果是 floating point error : overflow
第2个结果为6
这是为什么?