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

Error: expression cannot be used as a function?

本文关键字:函数 不能 表达式 错误      更新时间:2023-10-16

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

#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 cannot be used as a function

这是什么意思?我在做什么错?

请小心,(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;
}

编译器错误是因为 2(y1-y2)语法。

在这种情况下, 2(或 (x1-x2)^2)是"表达式",而 (y1-y2)被作为函数调用参数列表;根本不允许这种语法产生。

比较引入二进制运算符(*)的以下形式,这又使解析器将后续的(y1-y2)视为表达式(通过分组括号)而不是函数调用。虽然它不会做所需的事情,但由于^不是指示性,并且结果方程式是胡说八道,因此应该解析和编译。

sqrt((x1-x2)^2*(y1-y2)^2)