sqrt为什么在tc中老是出错

来源:百度知道 编辑:UC知道 时间:2024/06/07 05:04:36
#include <io.h>
#include <math.h>
double main()
{
float x1,y1;
float x2,y2;
double d;
printf("enter point 1");
scanf("%d%d",&x1,&y1);
printf("enter point 2");
scanf("%d%d",&x2,&y2);
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
d=sqrt(23);
printf(d);
return 0;
}
tc编译通过,程序执行时老是出现 domain error错误
d=sqrt(23);是测试语句,应删去。

你定义float X1 Y1 但是输入用的%d明显错误,你的主函数定义为double是什么意思呢?

您好
sqrt中的参数类型请明确为double型
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
改为
d=sqrt((double)(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
即可

在unix g++下测试正常

共同努力

在Linux下运行是正常的