void displayresults(double time, double range, double maxheight, double rovertime)
{
int hr;
int t;
int min;
double sec;
int roverhr;
int rovert;
int rovermin;
double roversec;
printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
hr = time/3600;
t = (time%3600);
min = t/60;
sec = t%60;
printf("Flight time : %d (hrs) %d (mins) %lf (seconds)\n", hr, min, sec);
printf("\nFlight Range : %.3lf\n", range);
printf("Maximum Height: %.3lf\n", maxheight);
printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
roverhr = rovertime/3600;
rovert = rovertime%3600;
rovermin = rovert/60;
roversec = rovert%60;
printf("Retrieval time : %d (hrs) %d (mins) %lf (seconds)\n",roverhr, rovermin, roversec);
return
}
我不知道为什么,但我从编译器中收到这些错误。 lab06.c:在函数“显示结果”中: lab06.c:119:错误:“t”的类型冲突 lab06.c:110:注意:之前的“t”声明在这里 lab06.c:119:错误:二进制 % 的操作数无效(有“double”和“int”) lab06.c:121:错误:二进制 % 的操作数无效(有“double”和“int”) lab06.c:127:错误:二进制 % 的操作数无效(有“double”和“int”) lab06.c:132:错误:“}”标记之前的预期表达式 lab06.c:132:警告:“返回”带有值,在函数中返回 void
第 119 行开始于 t = time%3600
最佳答案
time
声明为double
( displayresults
的参数),所以表达式 time/3600
的结果也是 double
类型,但您试图将此结果存储在 hr
中(以及 t
中的) int
类型。
此外,取除法的余数( %
)对于 double
的参数没有意义。 type - 这实际上是编译器发现的错误。
首先检查你是否真的有时间 double
,并且不,只需更改程序的其他部分和函数的签名...也许应该是
void displayresults(int time, double range, double maxheight, int rovertime)
如果时间真的如 double
您应该在使用整数除法( /
)和余数( %
)之前先生成整数,例如:
hr = int(time) / 3600;
t = int(time) % 3600;
或者更好地使用以下操作 double
所有变量的类型:
double hr, t, min, sec;
hr = trunc(time / 3600);
t = fmod(time, 3600);
min = trunc(t / 60);
sec = fmod(t, 60);
printf("%.0lf (hrs) %.0lf (mins) %lf (seconds)\n", hr, min, sec);
说明符%.0lf
在printf
允许打印double
如int
(不带分数)
关于c - 不确定值的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713491/