当前位置: 代码迷 >> 单片机 >> while(N-);与uint i; for(i=零;i<N;i++);的区别
  详细解决方案

while(N-);与uint i; for(i=零;i<N;i++);的区别

热度:338   发布时间:2016-04-28 15:02:53.0
while(N--);与uint i; for(i=0;i<N;i++);的区别
void delay(uint N)
{
  while(N--);
}

void delay(uint N)
{
  uint i;
  for(i=0;i<N;i++);
}
各位高人,我用proteus仿真学单片机,写了一个延时程序,当我用第二种方法延时的时候
单片机运行正常,而当我用第一种方法延时的时候根本没结果。求高人指点一二......
------解决方案--------------------
可能是被编译器优化了,降低编译器的优化等级试试
------解决方案--------------------
你确认没起效果? 是否跟编译器有关? 一般的自加循环比自减循环要长。能否通过汇编来看看到底发生了什么?
------解决方案--------------------
这个要看反汇编一下
看下反汇编之后的代码是不是被编译器优化了
如果是VC编译器这两个函数都会被优化,都不会有什么效果。
看看你用的编译器可否关掉优化选项。
------解决方案--------------------
没结果,单步跟踪一下!
------解决方案--------------------
你太逗了,while(N--)你N是无符号型的,这循环不可能结束啊
------解决方案--------------------
没有区别,应该不会。
------解决方案--------------------
六楼说的明显不对,while()结束条件是括号里面为零,用无符号型是对的。