《编写高质量代码:改善c程序代码的125个建议》——建议26:区别continue与break语句

简介:

本节书摘来自华章计算机《编写高质量代码:改善c程序代码的125个建议》一书中的第3章,建议26,作者:马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

建议26:区别continue与break语句

在C语言中,continue语句和break语句的区别如下。
(1)对于continue语句
它只结束本次循环,而不是终止整个循环的执行。也就是说,在while循环、do/while循环和for循环中,continue语句将跳过循环体中剩余的语句而强制执行下一次循环,即结束本次循环,跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定,如下面的示例代码所示:

int main(void)
{
    unsigned int i=0;
    for( i=0;i<20;i++)
    {
            if (i%2==0)  
                    continue;
            printf("%4d",i);
    }
    printf("\n");
    return 0;
}

在上面的代码中,为了演示continue 语句的作用,利用continue语句输出0到19之间不能被2整除的数。其中,当i能被2整除时,将执行continue语句,结束本次循环,并跳过尚未执行的printf("%4d",i) 语句,接着执行下一次循环与判断语句 if (i%2==0)。只有i不能够被2整除时才执行printf(“%4d”,i) 语句来输出结果,如图3-3所示。


cab71d14b321c565d618c6c4db32179169ada894

(2)对于break语句
相对于continue语句,break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。也就是说,在分支结构程序设计中用break语句可以跳出switch语句块,继续执行switch下面的语句。而在while循环、do/while循环和for循环中,break语句用来终止本层循环,继续执行该循环外的语句。
现在,如果将上面示例代码中的continue语句修改成break语句结果会是什么呢?如下面的示例代码所示:

int main(void)
{
    unsigned int i=0;
    for( i=0;i<20;i++)
    {
            if (i%2==0)  
                    break;
            printf("%4d",i);
    }
    printf("\n");
    return 0;
}

其实,从代码中可以看出,当for循环执行第一次循环时(即i的值为0),表达式0%2的值为0,因此,if (i%2==0) 语句返回真,从而执行break语句,终止整个for循环,最后程序什么都不输出。
最后还需要注意的是,break语句不能用于循环语句和switch语句之外的任何其他语句中。在循环语句中,break语句与continue语句一般与if语句一起使用。

相关文章
|
Dart JavaScript
[Flutter]足够入门的Dart语言系列之流程控制语句:中断和异常(continue/break、try...catch)
循环的执行是通过循环条件来控制的,但是,有时我们想要通过额外的条件判断,来决定是否中断执行,或者中断本次循环而继续执行下次及之后的循环;此外,我们需要对于异常情况的处理...
341 0
[Flutter]足够入门的Dart语言系列之流程控制语句:中断和异常(continue/break、try...catch)