以毫秒为单位的时间,单位为c99?

以毫秒为单位的时间,单位为c99?,c,time,c99,time.h,C,Time,C99,Time.h,我试图找出如何计算C99中一些套接字编程连接之间的毫秒数,但在C99上得到0毫秒,并在mac终端上返回实际值。我在代码中包含了时间部分 初始化: 开始运行: t1+=start.tv_sec+(start.tv_usec/1000000.0); t2+=end.tv_sec+(end.tv_usec/1000000.0); 操作结束: t1+=start.tv_sec+(start.tv_usec/1000000.0); t2+=end.tv_sec+(end.tv_usec/100000

我试图找出如何计算C99中一些套接字编程连接之间的毫秒数,但在C99上得到0毫秒,并在mac终端上返回实际值。我在代码中包含了时间部分

初始化:

开始运行:

t1+=start.tv_sec+(start.tv_usec/1000000.0);
t2+=end.tv_sec+(end.tv_usec/1000000.0);
操作结束:

t1+=start.tv_sec+(start.tv_usec/1000000.0);
t2+=end.tv_sec+(end.tv_usec/1000000.0);
然后以毫秒为单位打印实际时间:

printf("Sent........RTT = %g ms\n",(t2-t1)/100);

假设您正确地更新了
timeval
结构,那么您不是在计算毫秒,而是在计算整秒,您打印的差值是除以100,而不是乘以1000。通过计算时间差,可以降低精度:

diff += (end.tv_sec - start.tv_sec) * 1000.0 + end.tv_usec / 1000.0 - start.tv_usec / 1000.0;

...

printf("Sent........RTT = %g ms\n", diff / 100);

我会担心潜在的较大tv_sec值会导致msec值精度的巨大损失。我会先减去两个秒值。或者使用非常大的整数以毫秒为单位保存所有内容。您能详细说明一下吗?我不完全明白你说的“c99”是什么意思?Linux?窗户?还有别的吗?C99是1999版C的编译器。我认为如果启用了它,它在哪个系统上存在并不重要。如果我错了,请纠正我@您用来获取时间的函数是Posix,不是任何C标准的一部分,它的实现(和精度)取决于操作系统,而不是编译器。