首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中添加两个长in

在C中添加两个长in
EN

Stack Overflow用户
提问于 2013-03-14 06:44:05
回答 5查看 284关注 0票数 0

我很难添加两个很长的ints,本质上我想要的是使用这两个变量所花费的‘总’时间,并且我一直得到0。

代码语言:javascript
复制
struct rusage rusage;
getrusage(RUSAGE_SELF, &rusage); 
printf("TOTAL TIME \n");
printf("%ld.%06ld", (rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec), 
                    (rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec));

打印出一个0。我可以打印出用户的时间,系统的时间,但我不能添加他们。请帮帮忙。

作者想要的不是只添加两个long整数,而是分别添加两个timeval结构的秒和微秒。

EN

回答 5

Stack Overflow用户

发布于 2013-03-14 06:52:14

类似这样的东西,但这可以写得更好:

代码语言:javascript
复制
  struct rusage rusage;
  struct rusage tusage;
  getrusage(RUSAGE_SELF, &rusage); 
  printf("TOTAL TIME \n");
  tusage.ru_utime.tv_sec = rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec;
  tusage.ru_utime.tv_usec = rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec;
  tusage.ru_utime.tv_sec += tusage.ru_utime.tv_usec / 1000000;
  tusage.ru_utime.tv_usec = tusage.ru_utime.tv_usec % 1000000;
  printf("%ld.%06ld\n", tusage.ru_utime.tv_sec, tusage.ru_utime.tv_usec);
票数 1
EN

Stack Overflow用户

发布于 2013-03-14 06:48:27

您的代码既没有显示结构,也没有显示其填充方式。但是printf参数列表将tv_usec成员传递两次给函数。您使用逗号运算符,并使用括号中的最右边成员(tv_usec)。

票数 0
EN

Stack Overflow用户

发布于 2013-03-14 06:53:32

你可以这样做:

代码语言:javascript
复制
#include <sys/time.h>
struct timeval  StartTime, EndTime;
gettimeofday(&StartTime, NULL);
/...

// Your program

.../
gettimeofday(&EndTime, NULL);

printf ("Total time = %f seconds\n",
         (double) (tv2.tv_usec - tv1.tv_usec)/1000000 +
         (double) (tv2.tv_sec - tv1.tv_sec));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15402838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档