玖叶教程网

前端编程开发入门

嵌入式C语言中break和continue在循环语句中的应用

我们在编写循环体的时候,可以通过使用break语句和continue语句,使得循环控制更加灵活。break语句是完全从循环中跳出,continue语句只结束本次循环。换句话来说,break的作用就是跳出循环,continue的作用就是加速循环。

break在循环体中的应用

break语句一般用于switch/case的分支结构中,它可以使程序跳出switch而执行switch以后的语句。如果没有break语句,则循环体将成为一个死循环而无法退出,所以我们基本上不会这么做;如果某个在case结束的时候,没有break,那么当这个case执行完成后,会立即进入下一个case继续运行。所以有时候我们会利用这个特性,去归并那些需要做相同处理的case。比如,在汽车诊断协议中,某些特殊的诊断服务,

switch (ReqBox[REQ])
{
    case 0x01:
    case 0x03:
        ......//服务0x01和0x03的处理
        break;
    case 0x02:
    case 0x04:
        ......//服务0x02和0x04的处理
        break;
}

当break语句用于循环语句中时,可使程序终止循环而执行循环后面的语句。通常break语句总是与if语句连在一起,即满足条件时便跳出循环。这种方法在数据查询比较中,常常被用到。比如在车钥匙的序列号比较查询中,

for (i=0;i<N_RC;i++)
{
    ......
    if ((REC[4] == KEY_SN[0]) && (REC[5] == KEY_SN[1])&&

    (REC[6] == KEY_SN[2]) && ((REC[7]&0x0F) == KEY_SN[3]))
    {
        break;
    }
    ......
}

只要找到能匹配上的序列号,就可以立即去做后续功能响应了,而不需要遍历所有的序列号。从而提高了代码响应效率。

另外,break语句使用的时候,还需要明确以下两点:

1、break语句对if/else的条件语句不起作用。

break语句是退出循环,不是退出if/else条件。

2、在多层循环中, 一个break语句只向外跳一层。

一个break语句是不能跳出嵌套循环的,如果需要这样做那只能用goto语句。

continue在循环体中的应用

continue语句的作用是跳过循环体中剩余的语句,而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,也是与if条件语句一起使用,用来加速循环。

比如,在LIN通信里,

for (i=0;i<L_ID_TOTAL;i++)
{
    ......
    if (L_IDVal[i] == 0x3C)
    {
        continue;
    }
    ......//数据信号处理
} 

针对普通数据帧需要做数据处理,但是对于ID为0x3C的命令帧就没有数据处理的需求,直接加速进入下一次循环就可以了。

小结

因此,我们可以看出来,break语句和continue语句在循环体中,一般不会影响到程序的实际运行结果。但是,对于提高程序的运行效率,还是很有好处的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言