gpt4 book ai didi

c++ - 以下程序的格式说明符可能是什么?

转载 作者:行者123 更新时间:2023-11-30 19:47:19 24 4
gpt4 key购买 nike

void TASK(Task100ms_Raster)
{
int a,b,c;
struct timespec start, stop;
uint32 StartTime, StopTime;
uint32 duration100ms;

if( clock_gettime( CLOCK_REALTIME, &start) == -1 ) {
perror( "clock gettime" );
}

StartTime =start.tv_sec + 0.0000001 * start.tv_nsec;
printf("start time is %lu", StartTime);

printf("value is %d",c);
printf("ETAS1\n");
if( (StopTime = clock_gettime( CLOCK_REALTIME, &stop)) == -1 )
{
perror( "clock gettime" );
}
StopTime = stop.tv_sec + 0.0000001 * stop.tv_nsec;
printf("stop time is %lu", StopTime);

duration100ms = StopTime -StartTime;
printf( "time difference is= %lu\n", duration100ms );
}

我创建了一个计时器,它计算开始时间、停止时间和时间差。我对开始时间、停止时间和 suration100ms 的格式说明符感到困惑。但是 struct timespec start, stop;类型为http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/lib_ref/t/timespec.html那么获得结果的正确格式说明符可能是什么。有人指导我。

最佳答案

您正在进行浮点计算来计算秒数,但将结果存储在整数中:

StartTime = start.tv_sec + 0.0000001 * start.tv_nsec;

这会将结果截断为整数。您应该将 StartTime 设为 double,并按如下方式打印:

double StartTime = start.tv_sec + 1e-9 * start.tv_nsec;

printf("start time is %f\n", StartTime);

我认为计算差异时转换为 float 更有利于精度:

double duration = StopTime.tv_sec - StartTime.tv_sec +
1E-9 * (StopTime.tv_nsec - StartTime.tv_nsec);

如果您必须将持续时间设置为以 100 毫秒为单位的整数,您可以这样做:

duration = 10000 * (StopTime.tv_sec - StartTime.tv_sec) + 
(StopTime.tv_nsec - StartTime.tv_nsec) / 100000000;

关于c++ - 以下程序的格式说明符可能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com