+ -
当前位置:首页 → 问答吧 → 如何能让time输出随时间变化的值呢?

如何能让time输出随时间变化的值呢?

时间:2010-08-18

来源:互联网

#include <stdio.h>
#include <sys/time.h>

int main()
{
        struct timeval tv;
        float time;

        gettimeofday(&tv,NULL);
        time = (float)tv.tv_sec + (float)tv.tv_usec/1000000;
        printf("%.4f %.4fs\n",(float)tv.tv_sec,(float)tv.tv_usec);
        printf("time = %.4fs\n",time);
}

想让最后一个打印time每次输出随时间变化的值,但是这样每次打印出来的值总不变。可是上一个打印却是在变化的,不知啥情况。大家帮解决下。

作者: robin254817   发布时间: 2010-08-18

float长度和精度不够,用double即可
  1. #include <stdio.h>
  2. #include <sys/time.h>

  3. int main()
  4. {
  5.         struct timeval tv;
  6.         double time;

  7.         gettimeofday(&tv,NULL);
  8.         time = tv.tv_sec + tv.tv_usec/1000000.0;
  9.         printf("%.4lf %.4lfs\n",(double)tv.tv_sec,(double)tv.tv_usec);
  10.         printf("time = %.4lfs\n",time);
  11.         return 0 ;//main() 函数最后怎么可以忘记这句话呢?
  12. }
复制代码

作者: davelv   发布时间: 2010-08-18

最后一句改成:printf("time = %.4fs\n",(float)tv.tv_sec+(float)tv.tv_usec/1000000); 就可以了,为什么赋值就不行呢?

作者: robin254817   发布时间: 2010-08-18



QUOTE:
最后一句改成:printf("time = %.4fs\n",(float)tv.tv_sec+(float)tv.tv_usec/1000000); 就可以了,为什么赋 ...
robin254817 发表于 2010-08-18 10:11




    printf隐含的把float都按double处理的

作者: hellioncu   发布时间: 2010-08-18

回复 davelv


    原来如此,多谢

作者: robin254817   发布时间: 2010-08-18