我一直收到这个错误:二进制操作数无效^(有'double'和'double')

时间:2013-02-08 21:08:34

标签: c binary double operands

每当我运行代码时,我的第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 个答案:

答案 0 :(得分:2)

在C ^中是eXclusive OR运算符(XOR),而不是取幂运算符。你不能XOR两个浮点值。

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

答案 1 :(得分:1)

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

  

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

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

要使用电源操作,请使用pow中声明的powfmath.h函数。

答案 2 :(得分: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;
}

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

希望有所帮助:)

答案 3 :(得分:0)

另一个问题:

return v,t;

C中不能有多个返回值。

您可以将此作为调用中的out参数执行,也可以创建单独的函数。 例如:

void getinput(double* v_out, double* t_out)