c - 不确定值的类型

标签 c

 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);

说明符%.0lfprintf允许打印doubleint (不带分数)

关于c - 不确定值的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713491/

相关文章:

c - 我的第一杯Ragel

Char 指针和字符串

java - 如何将使用 "#define"宏的 C 代码转换为 Java?

c - 尽管在 PC 上运行良好,但程序在 SPOJ 上显示段错误?

c - 我不明白的预处理器宏

c - 如何 fork() n 个子进程执行不同的功能?

c - 使用指针访问shm结构

c - 抑制 "Bad system call"消息

c - `scanf` 应该如何处理不完整的指数部分?

c - 有没有一种简单的方法可以在不使用大型外部库的情况下用 C 替换它?