已搜索此答案,但找不到任何内容。我能找到的最接近的是 difftime returning 0 when there is clearly a difference其中有具有与自变量进行压入堆栈,什么格式要求做了很好的解释,但我想我的问题是不同的:fprintf and difftime madness
我所做的那样简单尽可能的例子。假设我有以下代码在C:
time_t starttime = time(NULL)
somefunction();
time_t newtime = time(NULL)
fprintf(stderr, "starttime %f and difftime %f\n", starttime, difftime(newtime, starttime));
fprintf(stderr, "difftime %f and starttime %f\n", difftime(newtime, starttime), starttime);
return 0;
而somefunction是对于1或2秒运行一些功能。我得到这个输出是:
starttime 2.000000 and difftime 0.000000
difftime 2.000000 and starttime 0.000000
我甚至不知道从哪里开始我的问题。为什么当我交换订单时,输出的值仍然是相同的?此外,为什么其中一个值为0?无论我使用%f,%d,%lu,%llu等,这都是一样的。是否有对此的栈参数解释? fprintf真的在内部做什么?
谢谢。我已经浪费了太多的时间去尝试调试,我真的很感谢你的帮助!
它似乎并不重要什么说明符我使用。你建议我用什么来代替? – bhh1988
@ bhh1988:格式字符串_must_中的说明符与您作为参数传递的变量的类型相匹配。发布的示例cnicutar会将'time_t'值转换为double,以确保它们匹配。 – Mat