c - 带时间计数的负数

标签 c shell unix time

我想知道为什么我尝试使用多种数据类型(float、double long double 等)得到负值,但结果是 .. 或其负数或零或 NA。这是一个检查商店中顾客的中等服务时间的功能,我只发布了问题代码的相关部分。提前告诉你

struct timeval timecount[MAX_COSTUMERS+1][2];

long double getMedium(struct timeval x[][2]){
      long double diff;
      int i;
      for(i=1;i<k.clientID;i++){
          diff+= ((x[i][1].tv_usec )*0.0000001 -  (x[i][0].tv_usec)*0.0000001) ) ;
      }

      return diff;
}

void AFUNCTION(){  // Called a bunch of times
       k.clientID++;
       gettimeofday(&timecount[k.clientID][0], NULL);

   // DO A BUNCH OF STUFF


       gettimeofday(&timecount[k.clientID][1], NULL);


}

void main ( ) {

     long double aux;
     aux=getMedia(timecount);
     printf("%LG \n",aux);

}

最佳答案

问题是你没有将 dif 初始化为 0。那里有垃圾数据......

double getMedium(struct timeval x[][2]){
  double diff =0;
  int i;
  for(i=1;i<k.clientID;i++){
      diff+= ((x[i][1].tv_usec )*0.0000001 -  (x[i][0].tv_usec)*0.0000001) ) ;
  }

  return diff;
}

关于c - 带时间计数的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528737/

相关文章:

c - 如何用其他字符替换字符串中的特定字符

macos - 查找具有(损坏的) future 日期的所有文件并修改为今天

C 在多线程程序中在哪里定义互斥体?

c - 互斥量动态分配

c - 如何使用 C 的 FILE* 描述符安全地 'unget' 字符

c - 如何在输出中获得 0?

shell - 已安装软件包时避免 yum 错误

mysql - 将 MySQL "SELECT"查询传递给 shell 变量

c - 高级 Unix 编程 - 第 1 章 shell 代码错误

shell -/etc/passwd 中没有条目的 unix 主目录