请教,用printf打印不出clock()的值

gyyggyy 2011-06-09 09:57:28
我想知道一个函数用了多少时间,代码如下(用的是TC2):

long start,end,delta;

start=clock();
fun();
end=clock();
delta=end-start;

printf("%ld",delta);


可是一运行就总是显示为0。但是我在TC2中用ADD WATCH增加了delta这个变量,再用F8单步调试时,可以看到delta这个变量是有数值的,在90左右。所以我比较迷惑,希望XDJM能帮个忙,解答一下,谢谢。
...全文
89 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2011-06-09
  • 打赏
  • 举报
回复
单步调试,程序中断的时候时钟始终还在计时。
所以让你用getchar中断一下。。。
gyyggyy 2011-06-09
  • 打赏
  • 举报
回复
输出start,end我都是过,基本都是2或1

但是单步调试时,用Add Watch加了start和end后,可以看到这两个变量都是比较大的数值,有2000多,所以这样看来应该是单步调试时用的时间比较多。
gyyggyy 2011-06-09
  • 打赏
  • 举报
回复
应该是单步调试时需要比较长的时间

我把测试用的两个循环的上限都该为32767后,运行就显示数值了。

或许就是单步调试的原因吧
yfk 2011-06-09
  • 打赏
  • 举报
回复
LZ直接输出start和end,看看输出结果是什么~
yfk 2011-06-09
  • 打赏
  • 举报
回复
程序没有问题,写了个:

unsigned long int start,end,delta;
start=clock();
for (int i=0;i<100000;i++)
for (int j=0;j<100;j++)
{}
end=clock();
delta=end-start;
printf("%ld\n",delta);


输出46
KID_coder 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gyyggyy 的回复:]
我的意思是在单步调试时,可以看到delta是有数值的,肯定大于0,但是运行这个程序时,就显示为0。

而且用循环的方法我使了,结果也一样,循环的代码如下:
start=clock();
for (int i=0;i<100000;i++)
for (int j=0;j<100000;j++)
{}
end=clock();
delta=end-start;
printf(……
[/Quote]
调试的时候会暂停一下。。。delta才会大于0
计算机的运算速度比较快

LZ这两层循环是空循环,大概被编译器优化了,直接跳过
就想叫yoko 2011-06-09
  • 打赏
  • 举报
回复
for (int i=0;i<100000;i++)
for (int j=0;j<100000;j++)

再加0试
  • 打赏
  • 举报
回复
fun函数执行时间太短,从而导致end跟start一样大,不妨在两个之间做其他操作
gyyggyy 2011-06-09
  • 打赏
  • 举报
回复
我的意思是在单步调试时,可以看到delta是有数值的,肯定大于0,但是运行这个程序时,就显示为0。

而且用循环的方法我使了,结果也一样,循环的代码如下:
start=clock();
for (int i=0;i<100000;i++)
for (int j=0;j<100000;j++)
{}
end=clock();
delta=end-start;
printf("%ld",delta);


结果还是0

很疑惑
ryfdizuo 2011-06-09
  • 打赏
  • 举报
回复
long start,end,delta;

start=clock();
fun();
getchar(); //也可以中断一下,等待输入以后结束,看一下时间。。。。
end=clock();
delta=end-start;

printf("%ld",delta);
ryfdizuo 2011-06-09
  • 打赏
  • 举报
回复
fun太快了。你里面加个for循环。
for(int i=0; i<100000000; i++);

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧