搜索此问题的答案,但找不到任何东西。我能找到的最接近的是 difftime 在明显存在差异时返回 0这有一个很好的解释,这与参数如何被推入堆栈以及格式期望什么有关,但我认为我的问题不同:
我做了一个尽可能简单的例子。假设我在 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 真正在内部做什么?
谢谢你。我已经浪费了太多的时间来调试它,我真的很感激你的帮助!