gpt4 book ai didi

function - 无效的二进制操作数,缺少理论

转载 作者:行者123 更新时间:2023-12-03 08:26:36 27 4
gpt4 key购买 nike

我收到一个错误“对二进制*无效的操作数*(具有'double'和'double *')”
尽管x,y的变量是普通double,但我必须使用该函数编写的带有指针的函数,因此我发送了它们的地址以使该函数正常工作。我不明白为什么坡度没有错误,而仅是* y_intercept。

void determine_line(double *, double *, double *, double *, double *, double *);

int main()
{
double x1 = 0.0, x2 = 0.0, y1 = 0.0, y2 = 0.0, m = 0.0, b = 0.0;

x1 = readValue("x1");
y1 = readValue("y1");
x2 = readValue("x2");
y2 = readValue("y2");

double *y_intercept = &b;
double *slope = &m;

determine_line(&x1,&y1,&x2,&y2,slope,y_intercept);
printf("\nThe points (%.2lf, %.2lf) and (%.2lf, %.2lf) are on the"
" line: y = %.2lfx + %.2lf\n",x1,y1,x2,y2,*slope,*y_intercept);
}
void determine_line(double *x1, double *y1, double *x2, double *y2
, double *slope, double *y_intercept)
{
*slope = (y1-y2)/(x1-x2);
*y_intercept = y2 - (*slope) * x2 ; // error
}

最佳答案

determine_line的所有参数都是指针。您需要取消对指针的引用,以获得可以对其执行算术运算的数字。
*slope分配不会导致错误,因为允许使用指针减法,尽管在这种情况下,由于指针没有指向相同的对象,因此结果是不确定的。但是该行还需要取消引用以产生正确的结果。

void determine_line(double *x1, double *y1, double *x2, double *y2
, double *slope, double *y_intercept)
{
*slope = (*y1-*y2)/(*x1-*x2);
*y_intercept = *y2 - (*slope) * *x2 ;
}

虽然尚不清楚为什么前四个参数首先是指针。唯一需要作为指针的参数是 slopeintercept,因为它们用于将结果发送回去。

关于function - 无效的二进制操作数,缺少理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52394313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com