不确定值的类型

时间:2017-06-23 05:11:26

标签: c

24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 -1

1 个答案:

答案 0 :(得分:1)

time被声明为doubledisplayresults的参数),因此表达式time/3600的结果也属于double类型,但您正在尝试将此结果存储在hr类型的t(以及int)中。 此外,对%类型的参数进行除法的余数(double)是没有意义的 - 这实际上是编译器发现的错误。

首先检查你是否真的得到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(不含分数)