为什么clock_t只给我C中的整数

时间:2018-03-26 17:23:23

标签: c clock

我试图计算排序功能,非常简单。代码如下:

clock_t start_t, end_t, total_t;
start_t = clock();
sort();
end_t = clock();
total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
printf("sort time: %le", (double)total_t);

你可以说这很有用。但是,无论需要多长时间,我都会获得整数输出。如果排序1M元素打印出来

sort time: 1.000000e+00

排序2M元素打印出来

sort time: 2.000000e+00

然后对两者之间的任何元素值进行排序将打印这两个输出中的一个。 1.3M元素显然也需要1.000000e + 00秒。

为什么会发生这种情况,更重要的是如何解决?

1 个答案:

答案 0 :(得分:4)

您将double计算的结果分配给total_t类型的clock_t,这可能会截断结果,因为clock_t 通常是整数类型(不保证,但在您的机器上看起来如此) - 然后在打印后再回到double并不重要。

只需将结果存储在doubleas recommended here

double total = (double)(end - start) / CLOCKS_PER_SEC;
printf("sort time: %le", total);