是宏定义的问题,修改如下,供参考:
#include<stdio.h>
#include<math.h>
#define x1(x,y,z) ((y)*(y)-4*(x)*(z))>=0?(-(y)+sqrt((y)*(y)-4*(x)*(z)))/(2*(x)):99
#define x2(x,y,z) ((y)*(y)-4*(x)*(z))>=0?(-(y)-sqrt((y)*(y)-4*(x)*(z)))/(2*(x)):99
int main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
printf("x1=%f\nx2=%f\n",x1(a,b,c),x2(a,b,c));
return 0;
}
#include<stdio.h>
#include<math.h>
#define x1(a,b,c) ((-b+sqrt(b*b-4*a*c))/(2*a))
#define x2(a,b,c) ((-b-sqrt(b*b-4*a*c))/(2*a))
int main(){
double a,b,c;
scanf("%lf%lf%lf", &a, &b, &c);
printf("x1=%lf,x2=%lf\n", x1(a, b, c), x2(a, b, c));
return 0;
}
运行结果: