C语言中的break和continue

C语言中的break和continue一般在的,while,for这样含有循环体的语句中,某些情况下我们会需要立即跳出当前循环。这时使用break语句就可以实现直接从当前循环体直接跳出开始执行while,for语句的下一条语句。另外,break这种可以从一段复合语句中跳出的功能也被switch广泛借用,来跳过switch复合语句,也就是被花括号框住的代码块中剩余的部分,转去执行switc…

大家好,又见面了,我是你们的朋友全栈君。

        一般在的,while, for 这样含有循环体的语句中,某些情况下我们会需要立即跳出当前循环。这时使用break语句就可以实现直接从当前循环体直接跳出开始执行while, for语句的下一条语句。

        另外,break 这种可以从一段复合语句中跳出的功能也被switch 广泛借用,来跳过switch 复合语句,也就是被花括号框住的代码块中剩余的部分,转去执行switch 语句的下一条语句。因此在switch 中,break 常被用来控制控制流跳出,使得switch 在运用上更加灵活。

        而Continue 略不同于break 。虽然同样在while, for 语句中体现出“跳过”的效果。但continue是跳过循环体的剩余部分,而后重新执行循环体的句头而非下一条语句。

        另continue使用范围被限制在循环体中,不可用于switch。

 

我们可以通过一些简单的代码来验证他们的效果:

break 语句在while…do 句型中的效果:

#include <stdio.h>
//break 在while、for、switch语句中的运用
int main (){
      //break in while...do
      //初始化 initialize
      int tmp = 0;
      puts ( "while criculation\n" );
      //while循环
      while ( tmp <= 5 ){//while循环5次
            printf_s ( "%d\t", tmp );
            printf_s ( "%d\n", tmp );
            tmp++;
      }//end while
      //初始化 initialize
      tmp = 0;
      puts ( "\nwhile circulation, execute the break when tmp = 3\n" );
      //while循环
      while ( tmp <= 5 ){//while循环5次
            printf_s ( "%d\t", tmp );
            if ( 3 == tmp ){//当tmp为3时,执行break
                  puts ( "break...");
                  break;
            }//end if
            printf_s ( "%d\n", tmp );
            tmp++;
      }//end while
}

C语言中的break和continue

相似的,在do…while 语句中的效果:

#include <stdio.h>
//break 在while、for、switch语句中的运用
int main (){
      //break in do...while
      //初始化 initialize
      int tmp = 0;
      puts ( "while criculation\n" );
      //while循环
      do{//while循环5次
            printf_s ( "%d\t", tmp );
            printf_s ( "%d\n", tmp );
            tmp++;
      }while ( tmp <= 5 );//end while
      //初始化 initialize
      tmp = 0;
      puts ( "\nwhile circulation, execute the break when tmp = 3\n" );
      //while循环
      do{//while循环5次
            printf_s ( "%d\t", tmp );
            if ( 3 == tmp ){//当tmp为3时,执行break
                  puts ( "break...");
                  break;
            }//end if
            printf_s ( "%d\n", tmp );
            tmp++;
      }while ( tmp <= 5 );//end while
}

C语言中的break和continue

而break 在多重嵌套的while语句中

#include <stdio.h>
//break在while多重嵌套中的使用效果
int main () {
    //initialize
    int tmp = 0, loop = 0;
    puts ( "multiple while nesting" );
    //the first layer while
    while ( loop <= 2 ){
        loop++;
        puts ( " in the first layer while");
        //the second layer while
        while ( tmp <= 2 ){
            tmp++;
            puts ( "\tin the second while");
            if ( tmp >= 3){// execute break when tmp >= 3
                puts ( "\tbreak");
                break;
            }//end if 
            puts ( "\tout of the second while");
        }//end while
        puts ( "out the frist layer while");
    }//end while
}

C语言中的break和continue

break在for语句中体现:

#include <stdio.h>
//break 在while、for、switch语句中的运用
int main (){
      //break in for
      //if there is no break
      puts ( "if there is no break ");
      for (int tmp = 1; tmp <= 5; tmp++){//5 loops
            printf_s ( "\nthis is No.%d", tmp );
      }//end for
      //when we add break
      puts ( "\n\nexecute the break when tmp = 2");
      for (int tmp = 1; tmp <= 5; tmp++){//5 loops
            printf_s ( "\nthis is No.%d", tmp );
            if ( 2 == tmp ){//execute when tmp = 5
                  puts ( "\tbreak" );
                  break;
            }//end if
      }//end for
}

C语言中的break和continue

在switch 中的运用:

#include <stdio.h>
//break 在while、for、switch语句中的运用
int main (){
      //break in switch
      //initialize
      int tmp = 1;
      
      //a switch without break
      puts ( "a switch without break");
      switch ( tmp ){
            case 0:
                  puts ( "0");
            case 1:
                  puts ( "1");
            case 2:
                  puts ( "2");
            case 3:
                  puts ( "3");
            case 4:
                  puts ( "4");
            case 5:
                  puts ( "5");
            default:
                  puts ( "switch over\n");
      }//end switch
      //add break before case 4
      puts ( "add break before case 4" );
      switch ( tmp ){
            case 0:
                  puts ( "0");
            case 1:
                  puts ( "1");
            case 2:
                  puts ( "2");
            case 3:
                  puts ( "3");
                  break;
            case 4:
                  puts ( "4");
            case 5:
                  puts ( "5");
            default:
                  puts ( "switch over");
      }//end switch
}

C语言中的break和continue

continue 在while 循环中的效果体现:

#include <stdio.h>
//比较验证continue在while、for语句中的运用
int main () {
    //initialize
    int tmp = 0;
    puts ( "while circulation" );
    //while with out continue
    while ( tmp <= 5 ){
        tmp++;
        printf_s ( "%d\t", tmp );
        printf_s ( "%d\n", tmp );
    }//end while
    //initialize
    tmp = 0;
    puts ( "\nwhile loop with the continue statement");
    //while loop with the continue statement
    while ( tmp <= 5 )
    {
        tmp++;
        printf_s ( "%d\t", tmp );
        if ( tmp >= 3 ){//when tmp >= 3, excute continue
            puts ( "" );    // 保证输出结果的规整
            continue;
        }//end if
        printf_s ( "%d\n", tmp );
    }//end while
}

C语言中的break和continue

continue在多重的while循环中表现出的作用范围同break一致,只对其所在的最近一级嵌套起作用。

#include <stdio.h>
//continue在while多重嵌套中的使用效果
int main () {
    //initialize
    int tmp = 0, loop = 0;
    puts ( "multiple while nesting" );
    //the first layer while
    while ( loop <= 2 ){
        loop++;
        puts ( " in the first layer while");
        //the second layer while
        while ( tmp <= 2 ){
            tmp++;
            puts ( "\tin the second while");
            if ( tmp >= 2){// execute continue when tmp >= 3
                puts ( "\tcontinue");
                continue;
            }//end if 
            puts ( "\tout of the second while");
        }//end while
        puts ( "out the frist layer while");
    }//end while
}

C语言中的break和continue

而尝试在switch 中使用continue 则会直接报错,指明continue 只能用于循环体

#include <stdio.h>
//continue 在while、for、switch语句中的运用
int main (){
      //continue in switch
      //initialize
      int tmp = 1;
      
      //a switch without continue
      puts ( "a switch without continue");
      switch ( tmp ){
            case 0:
                  puts ( "0");
            case 1:
                  puts ( "1");
            case 2:
                  puts ( "2");
            case 3:
                  puts ( "3");
            case 4:
                  puts ( "4");
            case 5:
                  puts ( "5");
            default:
                  puts ( "switch over\n");
      }//end switch
      //add continue before case 4
      puts ( "add continue before case 4" );
      switch ( tmp ){
            case 0:
                  puts ( "0");
            case 1:
                  puts ( "1");
            case 2:
                  puts ( "2");
            case 3:
                  puts ( "3");
                  continue;
            case 4:
                  puts ( "4");
            case 5:
                  puts ( "5");
            default:
                  puts ( "switch over");
      }//end switch
}

C语言中的break和continue

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138923.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • B2C电商系统源码 在线商城源码[通俗易懂]

    B2C电商系统源码 在线商城源码[通俗易懂]B2C产品采用SSH+Jquery框架开发。具备构建大型电商平台的底层技术体系。支持Oracl与Mysql等多个主流数据库。一、商品系统支持实物与虚拟商品体系。无限制级商品分类与扩展。智能商品模板、个性定义商品属性与属性继承与关联。商品与资讯的智能关联、商品关键字维护,SEO效果更为高效、精准。二、订单系统完善订单流管理、精准跟踪状态与执行人分派。支持来自电商、电话以及渠道的多订单体系。支持订单全流程服务(订单打印、发运、到货、退货、换货、拒收)等。三、会员系统围绕会员精细服

    2022年9月19日
  • java 大学考试_java考试 (全部)「建议收藏」

    java 大学考试_java考试 (全部)「建议收藏」该楼层疑似违规已被系统折叠隐藏此楼查看此楼importjava.awt*;importjava.awtevent*;classABCimplementsActionListener,WindowListener{Buttonb1;Buttonb2;TextPieldshowing;publicvoidactionperformed(ActionEvente){if(e…

    2022年7月7日
  • Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    2021年12月17日
  • loadrunner性能测试步骤_loadrunner可以做接口测试吗

    loadrunner性能测试步骤_loadrunner可以做接口测试吗LoadRunner性能测试教程1.工具介绍及下载2.操作步骤2.1.VuGen脚本编写及运行2.2.Controller场景运行2.3.Alalysis分析1.工具介绍及下载LoadRunner,是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统

    2022年10月10日
  • Spring Boot热部署-JRebel

    Spring Boot热部署-JRebel

    2021年5月16日
  • oracle数据库定义变量和使用_oracle执行变量

    oracle数据库定义变量和使用_oracle执行变量一、异常错误介绍我们在使用oracle数据库做程序开发时,一般都会使用plsql做客户端连接查询工具,在写sql语句时plsql经常会报并非所有变量都已绑定01008这样类似的异常错误,通常我们程序员还看不出具体有什么毛病,具体错误提示见下图显示:出现以上这种错误出现的次数多了,我们就会有经验解决了,经过我们常年的工作经验以及网友的问题汇总,得出的最终结论就是:程序员sql语句书写不严谨导致该问题…

    2022年9月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号