while语句问题

[复制链接]
 楼主| houcs 发表于 2012-6-16 10:06 | 显示全部楼层 |阅读模式
while(1)
  {
    if(volsample==20)
    {
      volsample=0;
      break;
    }
  } //当volsample=20时,把它清零,同时跳出while循环。不知道能不能跳出来,因为有break在if语句中。。。volsample是在定时器中断里不停的累加。
小小猫咪 发表于 2012-6-16 10:06 | 显示全部楼层
如果你的volsample在其它地方(中断或其它任务)有引用的话,可以跳出循环。
zyf部长 发表于 2012-6-16 10:07 | 显示全部楼层
可以
pangb 发表于 2012-6-16 10:08 | 显示全部楼层
volsample=0   在其它子程序中有的话就会跳到那个地方,但是while(1)还是不停检测volsample的
chenjunt 发表于 2012-6-16 10:10 | 显示全部楼层
volsample在哪里增1?  
在中断里吗?
kangzj 发表于 2012-6-16 10:12 | 显示全部楼层
只能跳出IF条件语句,不能跳出WHILE循环语句,你要跳出WHILE语句就得有
while
{
   语句;
   ..........;
   break;
}
zwll 发表于 2012-6-16 10:13 | 显示全部楼层
break;能够跳出的是它所在的第一层循环;LZ的if( )不是循环结构。所以break不作用于if(),
而作用于while(1){ }。
zwll 发表于 2012-6-16 10:14 | 显示全部楼层
break只能跳出最近的循环体,以我个人之见跳不出的。
morrisk 发表于 2012-6-16 10:17 | 显示全部楼层
可以跳出的。1,跳出switch语句
2,跳出最近的循环。
chuxh 发表于 2012-6-16 10:17 | 显示全部楼层
就是看书我也不敢这么用,我自己也没有这么用过,break是能跳出最近的一个循环,如果程序要我来维护,我不保证我能准确判断。程序是用来用的,有时候也要给人看,所以最好自己明白了别人也能明白。
juventus9554 发表于 2012-6-16 10:21 | 显示全部楼层
没问题,在其他任务中设置volsample等于20就可以退出
司徒老鹰 发表于 2012-6-16 10:21 | 显示全部楼层
说实话,能不能跳出得看RP!

while(1)
  {
    if(volsample>=20)
    {
      volsample=0;
      break;
    }
  } // 这下就真的没问题了。
liuzaiy 发表于 2012-6-16 10:23 | 显示全部楼层
你就是:
while(1){
  if(a){
      if(b){
        if(c){
            break;
        }
     }
  }
}
,只要能运行到break,也啪的一声跑出去了;
pangb 发表于 2012-6-16 10:24 | 显示全部楼层
这个要看这段代码在你的全部程序代码中的位置而定,如果实在MAIN中,是跳不出的,一直会在此代码段中循环。有一种情况例外,如果volsample在中断中,程序会在中断发生时,前去执行中断。
 楼主| houcs 发表于 2012-6-16 10:28 | 显示全部楼层
嗯,好的,我知道了
 楼主| houcs 发表于 2012-6-16 10:28 | 显示全部楼层
我就先结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部