怎么用for空语句制作延时程序

勇敢的搬砖人 2008-11-14 01:14:36
怎么用for空语句制作延时程序,试举例:
...全文
460 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2008-11-14
  • 打赏
  • 举报
回复
个人觉得,用for做空循环延时有以下的特点:
1. 时间不确定,不同的CPU执行的时间不一样,循环多少次不确定,需要在各自的平台上进行微调,以达期望的延时时间。
2. 这是忙等待,CPU在承担无用的负荷。
nullah 2008-11-14
  • 打赏
  • 举报
回复

1.for做N次循环
2.sleep(N)
ilovedrv 2008-11-14
  • 打赏
  • 举报
回复
在PC端,这个一般不会用语法本省的功能来实现,而是使用操作系统带的函数,例如sleep,usleep等

而如果在单片机里面,就可以用语法本省来计算时钟周期,因为硬件是固定的,所以基本差不多,不过以后移植是个问题
星羽 2008-11-14
  • 打赏
  • 举报
回复
在windows上要做到最精确计时,可以用

cpu周期


::QueryPerformanceCounter()
::QueryPerformanceFrequency()
baihacker 2008-11-14
  • 打赏
  • 举报
回复
不能
1.不可靠
2.可能被优化掉
星羽 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ma100 的回复:]
Sleep不能精确到ms,只有50ms

for(int i=0;i <10000;++i);
循环几次自己调试吧
[/Quote]


你在你奔2的机器试出来了,拿到别人的肉2上估计比你快好几倍 = =,

ps:计时不是靠试的
phisherr 2008-11-14
  • 打赏
  • 举报
回复
这个也太不准确了吧
lbh2001 2008-11-14
  • 打赏
  • 举报
回复
由于CPU的速度不一样,循环是不能比较准确延时的
用系统功能吧
ma100 2008-11-14
  • 打赏
  • 举报
回复
Sleep不能精确到ms,只有50ms

for(int i=0;i<10000;++i);
循环几次自己调试吧
czbever 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qqwx_1986 的回复:]
C/C++ code
int main()
{
for(int i=0;i<10000;++i);//做空循环10000次 ,这样的延迟不精确可以考虑用sleep()函数以毫秒为单位延迟
return 0;
}
[/Quote]

这个就可以了啊 很简单啊
星羽 2008-11-14
  • 打赏
  • 举报
回复
为什么不用Sleep

for 的话在不同的硬件上速度不一样
qqwx_1986 2008-11-14
  • 打赏
  • 举报
回复

int main()
{
for(int i=0;i<10000;++i);//做空循环10000次 ,这样的延迟不精确可以考虑用sleep()函数以毫秒为单位延迟
return 0;
}

69,364

社区成员

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

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