错误:表达式不能用作函数?

时间:2014-02-07 01:24:45

标签: c++ compiler-errors

我在程序中创建了一个快速方法,使用距离公式计算两点之间的距离,这里是代码:

#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不能用作函数”。这是什么意思?我做错了什么?

2 个答案:

答案 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)