大哥大姐们帮帮忙!SOLARIS系统下C函数CLOCK()计算不出时间是什么问题.
main()
{
clock_t start, end;
start = clock();
sleep(2秒);
end = clock();
printf("end - start = %d\n", (end - start)/clock_PER_SEC);
}
在SOLARIS下为什么打印出来的是0呀?应该是2才对.WINDOWS下是正确的.
问题点数:100、回复次数:11Top
1 楼whyglinux(山青水秀)回复于 2005-06-01 15:28:07 得分 50
clock_PER_SEC 应该是 CLOCKS_PER_SEC 吧。
得到的结果是 0 说明 sleep() 的经过时间不足 1 秒。检查一下 sleep() 函数的参数单位是什么,是否为秒;或者用 getchar() 来代替 sleep() 语句。Top
2 楼whyglinux(山青水秀)回复于 2005-06-01 15:35:31 得分 0
如果 sleep() 单位没有问题,那问题可能出现在输出上。一般 clock_t 被定义为 long,所以在用 printf() 函数进行输出的时候不应该使用 %d,应该使用 %ld。Top
3 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 15:43:58 得分 0
sleep(2秒);
---------
这样也可以阿。Top
4 楼flyinghawk_79(天之子)回复于 2005-06-01 15:55:37 得分 0
我改成%ld也没有用.
在SOLARIS下sleep(2);表示2秒.Top
5 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 16:07:49 得分 0
#include <stdio.h>
#include <time.h>
main()
{
clock_t start, end;
start = clock();
sleep(100);
end = clock();
printf("end - start = %g\n", (double)(end - start) / (double)CLOCKS_PER_SEC);
}Top
6 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 16:12:40 得分 50
printf("end - start = %g\n", (double)(end - start) /CLOCKS_PER_SEC); ---- 这样就可以了,刚才不知道为什么不行。Top
7 楼flyinghawk_79(天之子)回复于 2005-06-01 16:18:27 得分 0
sleep(2);是执行成功的.
但是printf("end - start = %g\n", (double)(end - start) /CLOCKS_PER_SEC); 打印出来还是0.
我想clock()函数和系统有关.在SOLARIS下他计算的是CPU的执行时间.SLEEP(2)CPU没有执行任何操作.所以还是0.不知道对不对.Top
8 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 16:54:37 得分 0
printf("end - start = %g\n", (double)(end - start) / (double)CLOCKS_PER_SEC);
-------------
这个呢?Top
9 楼flyinghawk_79(天之子)回复于 2005-06-01 17:08:41 得分 0
还不行.Top
10 楼mostideal(三甲)回复于 2005-06-02 23:48:51 得分 0
markTop
11 楼flyinghawk_79(天之子)回复于 2005-06-06 20:18:26 得分 0
帮帮忙呀Top




