0

每当我运行代码时,我的第 52 行和第 61 行都会不断给我相同的错误消息。

#include<stdio.h>
#include<math.h>

double getinput(void);
double calcwindchillold(double v, double t);
double calcwindchillnew(double v, double t);
void printResults(double windchillold, double windchillnew);

int main(void)
{
    double v = 0;
    double t = 0;
    double windchillold = 0;
    double windchillnew = 0;

    v = getinput();
    t = getinput();
    windchillold = calcwindchillold(v,t);
    windchillnew = calcwindchillnew(v,t);
    return 0;
}
double getinput(void)
{
    double v,t;
    printf("Input the wind speed in MPH: ");
    scanf("%lf", &v);
    printf("Input the temperature in degrees Fahrenheit: ");
    scanf("%lf", &t);


    return v,t;

}

double calcwindchillold(double v, double t)
{
    double windchillold;

    windchillold = ((0.3 * v^0.5) + 0.474 - (0.02 * v) * (t - 91.4) + 91.4);
// in the line above this is the error.

    return windchillold;
}

double calcwindchillnew(double v, double t)
{
    double windchillnew;

    windchillnew = 35.74 + 0.6215*t - 35.75*(v^0.16) + 0.4275 * t * v^0.16;
// in the line above this is the second error.

    return windchillnew;
}

void printResults(double windchillold, double windchillnew)
{
    printf("The wind chill using the old formula is: %lf F\n", windchillold);
    printf("The wind chill using the new formula is: %lf F\n", windchillnew);
}

这有调试系统说:错误:二进制^的无效操​​作数(有'double'和'double')

查看了其他也出现“双重”错误并且无法使用该信息来帮助我自己的脚本。

我知道这可能是我看过的一些简单的事情。

4

4 回答 4

2

在 C^中是异或运算符 (XOR),而不是求幂运算符。您不能对两个浮点值进行异或运算。

要取幂,您可以使用pow(3)函数 from math.h

于 2013-02-08T21:09:36.223 回答
1

位运算符不适用于浮点类型的操作数。操作数必须具有整数类型。

(C99,6.5.11p2 按位异或运算符)“每个操作数都应具有整数类型。”

^是 C 中的按位异或运算符。

要使用幂运算,请使用 中声明的powpowf函数math.h

于 2013-02-08T21:09:36.393 回答
1
#include <math.h>
double pow( double base, double exp );

在 C 中,您不能返回多个值,因此请执行这样的单个函数...

double getinput(const char* message) {
    double retval;
    printf("%s: ", message);
    scanf("%lf", &retval);
    return retval;
}

在了解指针以及如何掌握操作系统之前,请尽量保持代码简单。

希望能帮助到你 :)

于 2013-02-08T21:31:14.217 回答
0

另一个问题:

return v,t;

C 中不能有多个返回值。

您可以在调用时将其作为输出参数执行,也可以创建单独的函数。例如:

void getinput(double* v_out, double* t_out)
于 2013-02-08T21:12:50.203 回答