加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言学习笔记--break、continue、return和goto

发布时间:2020-12-15 04:48:34 所属栏目:百科 来源:网络整理
导读:1、break: ?? ?break 语句,它不仅可以跳出“循环体”,还可以跳出switch语句。同时,break 也只能用于这两种情况。break 语句不能用于循环语句和 switch 语句之外的任何其他语句中。 ?? ?break是用于永久终止循环。即不执行本次循环中break后面的语句,直接

1、break:


?? ?break 语句,它不仅可以跳出“循环体”,还可以跳出switch语句。同时,break 也只能用于这两种情况。break 语句不能用于循环语句和 switch 语句之外的任何其他语句中。


?? ?break是用于永久终止循环。即不执行本次循环中break后面的语句,直接跳出循环。


?? ?不管是for循环,还是while循环,或者是do…while循环,都可以用break 跳出来,但是break只能跳出一层循环。当有多层循环嵌套的时候,break只能跳出“包裹”它的最里面的那一层循环,无法一次跳出所有循环。?? ?


?? ?同样,在多层switch嵌套的程序中,break也只能跳出其所在的距离它最近的switch。


2、continue:


?? ?continue是用于终止本次循环。即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。


3、return:


?? ?return关键字并不是专门用于跳出循环的,return的功能是结束一个函数。 一旦在循环体内执行到一个return语句,return语句将会结束该函数,循环自然也随之结束。与continue和break不同的是,return直接结束整个函数,不管这个return处于多少层循环之内。 ?? ?


4、goto:


?? ?goto 语句是一种无条件流程跳转语句,goto可以跳出多重循环,标号只是标号,程序到标号位置正常执行。

?? ?continue和break的区别


?? ??? ?continue语句和break语句的区别是,continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。


?? ??? ?continue不能在switch中使用,除非switch 在循环体中。此时 continue 表示的也是结束循环体的本次循环,跟 switch 也没有任何关系。


?? ?goto语句建议


?? ??? ?1) 使用goto语句只能goto到同一函数内,而不能从一个函数里goto到另外一个函数里。


?? ??? ?2) 使用goto语句在同一函数内进行goto时,goto的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。


?? ??? ?3) 不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。


?? ??? ?4)应该避免向两个方向跳转。这样最容易导致"面条代码"。


程序测试部分:


?? ?//1、reak测试程序:


?? ?#include


?? ?/**


?? ? *********************************************************************************


?? ? * @file ? ? ?? ??? ?main.c


?? ? * @auther ? ?? ??? ?BA-li


?? ? * @version ??? ??? ?1.1.1


?? ? * @data ? ? ?? ??? ?2018-12-26 16:04:41


?? ? * @brief ? ??? ??? ?break和continue功能测试函数


?? ? * @param ? ??? ??? ?none


?? ? * @retval ? ?? ??? ?none


?? ? * @attention


?? ? *********************************************************************************


?? ? */


?? ?int


?? ?main(void)


?? ?{


?? ??? ?printf("This is a break/continue/goto/return test!!!rn");

?? ??? ?int i = 0;

?? ??? ?while (i < 10)


?? ??? ?{


?? ??? ??? ?i = i + 1;

?? ??? ??? ?if (i == 5)


?? ??? ??? ??? ?break;

?? ??? ??? ?printf("%d ?",i);

?? ??? ?}

?? ??? ?return 0;


?? ?}


?? ?/** 程序输出结果:


?? ? *****************************************


?? ? * This is a break/continue/goto/return test!!!


?? ? * 1 ?2 ?3 ?4


?? ? *****************************************


?? ? */


?? ??


?? ?//2、continue测试程序:


?? ?#include


?? ?/**


?? ? *********************************************************************************


?? ? * @file ? ? ?? ??? ?main.c


?? ? * @auther ? ?? ??? ?BA-li


?? ? * @version ??? ??? ?1.1.1


?? ? * @data ? ? ?? ??? ?2018-12-26 16:04:41


?? ? * @brief ? ??? ??? ?break和continue功能测试函数


?? ? * @param ? ??? ??? ?none


?? ? * @retval ? ?? ??? ?none


?? ? * @attention


?? ? *********************************************************************************


?? ? */


?? ?int


?? ?main(void)


?? ?{


?? ??? ?printf("This is a break/continue/goto/return test!!!rn");

?? ??? ?int i = 0;

?? ??? ?while (i < 10)


?? ??? ?{


?? ??? ??? ?i = i + 1;

?? ??? ??? ?if (i == 5)


?? ??? ??? ??? ?continue;

?? ??? ??? ?printf("%d ?",i);

?? ??? ?}

?? ??? ?return 0;


?? ?}


?? ?/** 程序输出结果:


?? ? *****************************************


?? ? * This is a break/continue/goto/return test!!!


?? ? * 1 ?2 ?3 ?4 ?6 ?7 ?8 ?9 ?10


?? ? *****************************************


?? ? */


?? ??


?? ?//3、return测试程序:


?? ?#include


?? ?/**


?? ? *********************************************************************************


?? ? * @file ? ? ?? ??? ?main.c


?? ? * @auther ? ?? ??? ?BA-li


?? ? * @version ??? ??? ?1.1.1


?? ? * @data ? ? ?? ??? ?2018-12-26 16:04:41


?? ? * @brief ? ??? ??? ?return功能测试函数


?? ? * @param ? ??? ??? ?none


?? ? * @retval ? ?? ??? ?none


?? ? * @attention


?? ? *********************************************************************************


?? ? */


?? ?int


?? ?main(void)


?? ?{


?? ??? ?printf("This is a break/continue/goto/return test!!!rn");

?? ??? ?int i = 0;

?? ??? ?while (i < 10)


?? ??? ?{


?? ??? ??? ?i = i + 1;

?? ??? ??? ?if (i == 5)


?? ??? ??? ??? ?return 0;

?? ??? ??? ?printf("%d ?",i);

?? ??? ?}

?? ??? ?return 0;


?? ?}


?? ?/** 程序输出结果:


?? ? *****************************************


?? ? * This is a break/continue/goto/return test!!!


?? ? * 1 ?2 ?3 ?4


?? ? *****************************************


?? ? */


?? ?


?? ?//4、goto测试程序:


?? ?#include


?? ?/**


?? ? *********************************************************************************


?? ? * @file ? ? ?? ??? ?main.c


?? ? * @auther ? ?? ??? ?BA-li


?? ? * @version ??? ??? ?1.1.1


?? ? * @data ? ? ?? ??? ?2018-12-26 16:04:41


?? ? * @brief ? ??? ??? ?goto功能测试函数


?? ? * @param ? ??? ??? ?none


?? ? * @retval ? ?? ??? ?none


?? ? * @attention


?? ? *********************************************************************************


?? ? */


?? ?int


?? ?main(int argc,char **argv)


?? ?{


?? ??? ?int i = 1;

?? ??? ?while(1)


?? ??? ?{


?? ??? ??? ?printf("while(1) rn");


?? ??? ??? ?while(i++)


?? ??? ??? ?{


?? ??? ??? ??? ?printf("while(i++) i = %dn",i);


?? ??? ??? ??? ?if(i > 3)


?? ??? ??? ??? ?{


?? ??? ??? ??? ??? ?goto program_exti;


?? ??? ??? ??? ?}


?? ??? ??? ?}


?? ??? ?}


?? ?program_exti:


?? ??? ?printf("程序结束n");


?? ??? ?return 0;


?? ?}


?? ?/**程序输出结果


?? ? ************************************


?? ? *while(1)


?? ? *while(i++) i = 2


?? ? *while(i++) i = 3


?? ? *while(i++) i = 4


?? ? *程序结束


?? ? ************************************


?? ? */


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读