把
SQUARE(x) x*x
改成
SQUARE(x) ((x)*(x))
应该是定义宏那里括号不匹配,DIST宏定义那里第二个SQUARE少了一个括号,第一个SQUARE前面多了个括号,然后double需要用一个括号括起来,再把sqr改为sqrt即可,修改如下:
参考链接:
两点间距离计算器 - 计算专家
#include <iostream>
#include <cmath>
using namespace std;
#define SQUARE(x) x*x
#define DIST(x1,y1,x2,y2) ( sqrt( (double) (SQUARE((x1-x2))+SQUARE((y1-y2))) ) )
int main(void){
double x1,x2,y1,y2,dist;
cin>>x1>>y1;
cin>>x2>>y2;
dist=DIST(x1,y1,x2,y2);
cout<<dist;
return 0;
}