我在程序中创建了一个快速方法,使用距离公式计算两点之间的距离,这里是代码:
#include <iostream>
#include <cmath>
using namespace std;
int distanceFormula(int x1, int y1, int x2, int y2) {
double d = sqrt((x1-x2)^2(y1-y2)^2);
return d;
}
它给我一个编译器错误,我声明“d”变量说“error:expression不能用作函数”。这是什么意思?我做错了什么?
答案 0 :(得分:7)
注意,(x1-x2)^2
不会在这里做2的指数。
请参阅http://www.cplusplus.com/reference/cmath/pow/。
其次,您可能忘记了表达式中的+
:
int distanceFormula(int x1, int y1, int x2, int y2) {
double d = sqrt(pow(x1-x2, 2) + pow(y1-y2, 2));
return d;
}
答案 1 :(得分:2)
编译器错误是因为2(y1-y2)
无效语法。
在这种情况下,2
(或者(x1-x2)^2
)是“表达式”,(y1-y2)
被视为函数调用参数列表;这种语法生产是不允许的。
比较以下形式,其中引入了二元运算符(*
),这反过来使得解析器将后续(y1-y2)
视为表达式(由分组括号限定)而不是函数调用。虽然不会做所需的,但由于^
不是取幂而且得到的等式是无意义的,它应该解析并编译。
sqrt((x1-x2)^2*(y1-y2)^2)