想用宏定义套用写出来求两点距离的程序,但是调用的时候报错了,是哪里写错了,还是sqrt函数错了吗?

img


这个宏定义的方式出错了吗?不太明白宏这里怎么用..是括号还是sqrt函数调还是其他地方用出了问题啊..

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;
}
 
 

img