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

    xiaoxiao2023-08-09  167

    本节书摘来自华章计算机《编写高质量代码:改善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("M",i); } printf("\n"); return 0; }

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

    (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("M",i); } printf("\n"); return 0; }

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

    最新回复(0)