每当我运行代码时,我的第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')
查看了其他也出现“双重”错误的脚本,并且无法使用该信息来帮助我自己。
我知道这可能是我看过的一些简单的事情。
答案 0 :(得分:2)
在C ^
中是eXclusive OR运算符(XOR),而不是取幂运算符。你不能XOR两个浮点值。
要取幂,您可以使用math.h
中的pow(3)
函数。
答案 1 :(得分:1)
按位运算符不适用于浮点类型的操作数。操作数必须具有整数类型。
(C99,6.5.11p2按位异或运算符)“每个操作数应具有整数类型。”
^
是C中的按位异或运算符。
要使用电源操作,请使用pow
中声明的powf
和math.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)