【发布时间】:2015-11-13 14:27:01
【问题描述】:
我一直在尝试使用时钟函数测量 C 程序中经过的时间,但每当我尝试打印任何时钟值时,我都会返回 0。例如:
clock_t time1, time2;
time1 = clock();
printf("Time 1 is %d.\n", (int)time1);
sleep(2);
time2 = clock();
printf("Time 2 is %d.\n", (int)time2);
在这两种情况下,time1 和 time2 都打印为 0。我感觉这是因为我在 printf 中使用了错误的类型,但我看到的每种类型似乎都不适合我。我用过 %Lf、%ld、%f。其他人可以在这里发现问题吗?
编辑:我尝试了此线程中提到的大多数类型:What’s the correct way to use printf to print a clock_t? 我什至尝试过 uintmax_t,但无法打印 p1 和 p2,我不知道如何验证它是否是类型问题,或者时钟是否没有返回足够的值。
【问题讨论】:
-
是的,你的想法是对的。我相信这已经在这里得到了回答:stackoverflow.com/questions/1083142/…
-
我在使用
%d ... (int)、%llu ... (unsigned long long)或%Lf ... (long double)时得到输出。签出这个问题stackoverflow.com/questions/9871071/why-c-clock-returns-0 -
它可能是特定于操作系统的。而
clock最多只能返回 CPU 微秒,所以你需要一个消耗一些 CPU 的计算。在 Linux 上,请参阅 time(7)