在C语言中,将一个timeval除以一个整数
我试图将在C语言中,将一个timeval除以一个整数,c,time,C,Time,我试图将timeval除以一个整数。以下是到目前为止我得到的信息: #include <limits.h> #include <stdio.h> #include <stdlib.h> int main(void) { struct timeval my_time; struct timeval my_time_quotient; int i; gettimeofday(&my_time, NULL);
timeval
除以一个整数。以下是到目前为止我得到的信息:
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
struct timeval my_time;
struct timeval my_time_quotient;
int i;
gettimeofday(&my_time, NULL);
i = 5;
my_time_quotient = my_time / i;
printf("%d secs, %d msecs\n", (int)my_time_quotient.tv_sec, (int)my_time_quotient.tv_usec);
return 0;
}
求商的正确方法是什么?你不能直接将一个
struct
除以一个数字类型,即使struct
代表某种数字
您必须首先将结构转换为表示微秒数的整数类型。由于元素的类型为int
,因此您需要找到一个位数几乎是int
的两倍的数字类型。希望您的编译器支持long-long-int
或\uuuu-int64
,两者都是64位
将结构的内容转换为数字类型后,除法将与任何除法一样直接进行
执行除法后,您需要将结果存储回timeval,可能需要使用“除法后的余数”或“模数”运算符,
x%y
您不能直接将结构
除以数字类型,即使结构
表示某种数字
您必须首先将结构转换为表示微秒数的整数类型。由于元素的类型为int
,因此您需要找到一个位数几乎是int
的两倍的数字类型。希望您的编译器支持long-long-int
或\uuuu-int64
,两者都是64位
将结构的内容转换为数字类型后,除法将与任何除法一样直接进行
执行除法后,您需要将结果存储回timeval,可能需要使用“除法后的余数”或“模数”运算符,
x%y
因为这可能是一个家庭作业问题,我不会给您任何代码,但我会给您解释为什么它不起作用,以及使其发挥作用的方法
当使用普通的旧数据类型(整数、双精度)时,可以进行除法。然而,timeval并不是一种简单的旧数据类型——它是结构中两种数据类型的组合。timevals结构不知道如何被整数除(当它说二进制操作数无效/(有'struct timeval'和'int')
时就是这个意思)
因此,您必须手动执行此操作-划分秒数(tv_sec),然后划分纳秒数(tv_usec),并将这些划分的结果插入到您的
my_time_商
timeval中。处理几分之一秒的时间留给读者作为练习-但是希思建议的方法是一种方法。由于这可能是一个家庭作业问题,我不会给你任何代码,但我会给你解释为什么它不起作用,以及使它起作用的方法
当使用普通的旧数据类型(整数、双精度)时,可以进行除法。然而,timeval并不是一种简单的旧数据类型——它是结构中两种数据类型的组合。timevals结构不知道如何被整数除(当它说二进制操作数无效/(有'struct timeval'和'int')
时就是这个意思)
因此,您必须手动执行此操作-划分秒数(tv_sec),然后划分纳秒数(tv_usec),并将这些划分的结果插入到您的
my_time_商
timeval中。处理几秒钟的分数留给读者作为练习-但是Heath建议的方法是一种方法。如果这是一个家庭作业问题,请添加“家庭作业”标签,这样我们就不会立即给出答案。欢迎使用Stack Overflow。如果您想回复此类邮件,请单击问题下方和每个答案下方的“添加评论”链接。如果这是一个家庭作业问题,请添加“家庭作业”标签,以便我们不会立即给出答案。欢迎使用堆栈溢出。如果您想回复这样的消息,请单击问题下方和每个答案下方的“添加评论”链接。这不会像前面所说的那样起作用-秒数除以的结果将需要保留任何分数结果(即,复杂的数学,无论是浮点数还是定点分数),将一秒钟的分数累积到微秒计数器中,检测微秒溢出,并将增量带入秒计数器中……我将您的注意力引导到注释“处理秒分数留给读者作为练习-但希思建议的方法是一种方法。”我不是说你要用长整数除以除数得到秒数。我想说的是,你需要自己用任何方法来处理除法,你的方法是正确的。这不会像前面所说的那样有效——秒的除法结果需要保留任何分数结果(即,复杂的数学,无论是浮点还是定点分数),将一秒钟的分数累积到微秒计数器中,检测微秒溢出,并将增量带入秒计数器中……我将您的注意力引导到注释“处理秒分数留给读者作为练习-但希思建议的方法是一种方法。”我不是说你要用长整数除以除数得到秒数。我要说的是,你需要自己用任何方法来处理这个问题,你的方法是正确的。
jen@ubuntu:~/$ gcc -g -otimespike timespike.c
timespike.c: In function ‘main’:
timespike.c:15: error: invalid operands to binary / (have ‘struct timeval’ and ‘int’)