打印

清零,同时跳出while

[复制链接]
2008|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houcs|  楼主 | 2014-6-17 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
while(1)
   {
     if(volsample==20)
     {
       volsample=0;
       break;
     }
   } //当volsample=20时,把它清零,同时跳出while循环。不知道能不能跳出来,因为有break在if语句中。。。volsample是在定时器中断里不停的累加。

相关帖子

沙发
zyf部长| | 2014-6-17 20:32 | 只看该作者
如果你的volsample在其它地方(中断或其它任务)有引用的话,可以跳出循环。

使用特权

评论回复
板凳
pangb| | 2014-6-17 20:33 | 只看该作者
可以

使用特权

评论回复
地板
zyf部长| | 2014-6-17 20:34 | 只看该作者
volsample=0   在其它子程序中有的话就会跳到那个地方,但是while(1)还是不停检测volsample的

使用特权

评论回复
5
chenjunt| | 2014-6-17 20:42 | 只看该作者
volsample在哪里增1?  
在中断里吗?

使用特权

评论回复
6
liuzaiy| | 2014-6-17 20:43 | 只看该作者
只能跳出IF条件语句,不能跳出WHILE循环语句,你要跳出WHILE语句就得有
while
{
    语句;
    ..........;
    break;
}

使用特权

评论回复
7
zwll| | 2014-6-17 20:44 | 只看该作者
break;能够跳出的是它所在的第一层循环;LZ的if( )不是循环结构。所以break不作用于if(),
而作用于while(1){ }。

使用特权

评论回复
8
zwll| | 2014-6-17 20:44 | 只看该作者
break只能跳出最近的循环体,以我个人之见跳不出的。

使用特权

评论回复
9
yinxiangh| | 2014-6-17 20:46 | 只看该作者
可以跳出的。1,跳出switch语句
2,跳出最近的循环。

使用特权

评论回复
10
小小猫咪| | 2014-6-17 20:46 | 只看该作者
就是看书我也不敢这么用,我自己也没有这么用过,break是能跳出最近的一个循环,如果程序要我来维护,我不保证我能准确判断。程序是用来用的,有时候也要给人看,所以最好自己明白了别人也能明白。

使用特权

评论回复
11
zyf部长| | 2014-6-17 20:47 | 只看该作者
没问题,在其他任务中设置volsample等于20就可以退出

使用特权

评论回复
12
司徒老鹰| | 2014-6-17 20:48 | 只看该作者
说实话,能不能跳出得看RP!

while(1)
   {
     if(volsample>=20)
     {
       volsample=0;
       break;
     }
   } // 这下就真的没问题了。

使用特权

评论回复
评论
handlike 2014-6-17 22:07 回复TA
这才是调试老手。 
13
yinxiangh| | 2014-6-17 20:49 | 只看该作者
你就是:
while(1){
   if(a){
       if(b){
         if(c){
             break;
         }
     }
   }
}
,只要能运行到break,也啪的一声跑出去了;

使用特权

评论回复
14
pangb| | 2014-6-17 20:49 | 只看该作者
这个要看这段代码在你的全部程序代码中的位置而定,如果实在MAIN中,是跳不出的,一直会在此代码段中循环。有一种情况例外,如果volsample在中断中,程序会在中断发生时,前去执行中断。

使用特权

评论回复
15
houcs|  楼主 | 2014-6-17 20:51 | 只看该作者
嗯,好的,我知道了

使用特权

评论回复
16
houcs|  楼主 | 2014-6-17 20:51 | 只看该作者
我就先结贴了

使用特权

评论回复
17
diweo| | 2014-6-17 22:05 | 只看该作者
liuzaiy 发表于 2014-6-17 20:43
只能跳出IF条件语句,不能跳出WHILE循环语句,你要跳出WHILE语句就得有
while
{

谁说的?
continue,break是跳出最近的一层循环,跟if没有关系。不只是while,就是for也照常可以跳出。
看看下面的代码:
for(di = 0; di<source_channel_count; di++)
{
        if(...==FALSE)
        {
                if(...)
                {
                        ...
                        continue;
                }

                for(dj = 2; dj<8; dj++)
                {
                        ...
                        if(...==True)
                        {
                                ...
                                break;
                        }
                }
        }
}

使用特权

评论回复
18
花戒| | 2014-6-17 23:13 | 只看该作者
顶12L,这问题看似很小,有时候调试起来会要人命。

使用特权

评论回复
19
原野之狼| | 2014-6-18 08:56 | 只看该作者
司徒老鹰 发表于 2014-6-17 20:48
说实话,能不能跳出得看RP!

while(1)

还是这个答案给力

使用特权

评论回复
20
QQ275000499| | 2014-6-18 09:23 | 只看该作者
我也想知道这个问题的答案

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝