while(N--);与uint i; for(i=0;i

rayylee 2011-08-11 09:13:27
void delay(uint N)
{
while(N--);
}

void delay(uint N)
{
uint i;
for(i=0;i<N;i++);
}
各位高人,我用proteus仿真学单片机,写了一个延时程序,当我用第二种方法延时的时候
单片机运行正常,而当我用第一种方法延时的时候根本没结果。求高人指点一二......
...全文
779 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayylee 2014-02-26
  • 打赏
  • 举报
回复
引用 6 楼 u013409355 的回复:
你太逗了,while(N--)你N是无符号型的,这循环不可能结束啊
无符号也有可能到0啊
anewbies 2014-01-21
  • 打赏
  • 举报
回复
六楼说的明显不对,while()结束条件是括号里面为零,用无符号型是对的。
cclutpk 2014-01-21
  • 打赏
  • 举报
回复
被编译器优化掉了
yclz 2014-01-21
  • 打赏
  • 举报
回复
请看六楼的答案
Binzo 2014-01-20
  • 打赏
  • 举报
回复
没有区别,应该不会。
不能说的便秘 2014-01-19
  • 打赏
  • 举报
回复
你太逗了,while(N--)你N是无符号型的,这循环不可能结束啊
rayylee 2011-08-11
  • 打赏
  • 举报
回复
谢谢指点,小弟刚入门,好好研究研究!!!!
AnYidan 2011-08-11
  • 打赏
  • 举报
回复
没结果,单步跟踪一下!
northcan 2011-08-11
  • 打赏
  • 举报
回复
这个要看反汇编一下
看下反汇编之后的代码是不是被编译器优化了
如果是VC编译器这两个函数都会被优化,都不会有什么效果。
看看你用的编译器可否关掉优化选项。
zhenghn2010 2011-08-11
  • 打赏
  • 举报
回复
你确认没起效果? 是否跟编译器有关? 一般的自加循环比自减循环要长。能否通过汇编来看看到底发生了什么?
lbing7 2011-08-11
  • 打赏
  • 举报
回复
可能是被编译器优化了,降低编译器的优化等级试试

27,510

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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