clock printf

wanderer 发表于 2008-03-08 21:42:02


  因为想要看看各种排序算法之间到底差多少,就用了clock().
  结果,输出总是0,或是0.000,000...
  修改成:不是输出前后时间差,只输出排序前(后)的clock返回值-- 也还是零.

  查来查去, 难道是clock_t是无符号类型, 用%d,%f不行?或者这返回值太大, 超出了表示范围?
但改用%u, %ld什么的也都不行.
  查到CSDN上, 有人问是不是Linux下clock始终返回0.(这太...了). 跟帖的大大们有的说是程序执行时间太短,clock返回值一截取就成0了.

于是把排序数组的大小改成100,000..
好了,终于.. 显示是运行了22秒...其间我看着CPU占用率一直在50%..
原来如此
------------------------------------------------------------
----------------
还有一点:
    printf("%f\n", CLOCKS_PER_SEC);
这样是不行的.输出为0.000,000
    printf("%f\n", (double)CLOCKS_PER_SEC);
这样才行.
----------------------------------------------------------------------------
笔记
  -printf不执行隐式类型转换.

  -printf函数中如果类型不匹配结果难以预测.

  -A warning: printf uses its first argument to decide how many arguments follow and what
their type is. It will get confused, and you will get wrong answers, if there are not enough arguments of if they are the wrong type.
[TCPL 7.3]

  -当一个函数用可变参数时, 它的原型说明没有也不能提供可变参数的数目和类型。所以通常的参数匹配保护不适用于可变参数中的可变部分。编译器不能执行内含的转换或警告不匹配问题.

  看来还是得再把TCPL认真看一下.
关键词(Tag): language

收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定