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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Delphi QuotedStr函数的原型

    Delphi QuotedStr函数的原型DelphiQuotedStr函数的原型functionQuotedStr(constS:string):string;
    var
     I:Integer;
    begin
     Result:=S;
     forI:=Length(Result)downto1do
       ifResult[I]=””thenInsert(””,Result,I);
     Result:=””+Resul

    2022年10月18日
    2
  • 字符串常量池、class常量池和运行时常量池「建议收藏」

    字符串常量池、class常量池和运行时常量池「建议收藏」 原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool/                 在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上说法都有问题,笔者尝试着…

    2022年9月10日
    3
  • [知识图谱实战篇] 四.HTML+D3+CSS绘制关系图谱「建议收藏」

    [知识图谱实战篇] 四.HTML+D3+CSS绘制关系图谱「建议收藏」前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术、Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例。为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏伦老师的网易云课程,并结合自己的理解和技术分享了该系列专栏。前文介绍了Python3抓取电影实体知识,Seaborn可视化展示电影信息,D3可视化布局。本文着重构建知识图谱,通过D3显示已获取的节点和关系图谱。

    2022年6月26日
    59
  • 在ListView中实现排序

    在ListView中实现排序此处介绍的情境是:(1)使用table布局ListView。(2)ListView的数据源是List。(3)排序字段2个(帖子的回复次数和浏览次数),都是int类型。基本思路:ListView触发数据

    2022年7月3日
    26
  • DoJa平台手机游戏的开发与移植

    DoJa平台手机游戏的开发与移植作者:关文柏时间:2006年6月13日关键字:DoJaNTTDoCoMoi-modei-appli内容概况:·DoJa技术简介·DoJaAPI预览·appli程序的开发·DoJa游戏移植到J2ME平台的方法·相关资源链接一,DoJa技术简介简单的说,DoJa是日本最大的移动通讯公司NTTDoCoMo…

    2022年6月5日
    31
  • unity3d在工业仿真中的应用_虚拟现实例子

    unity3d在工业仿真中的应用_虚拟现实例子JonathanLinowes(作者),童明(译者)文中示例代码下载亚马逊京东China-Pub当当目录列表内容译者序审校者简介前言第1章万物皆可虚拟11.1虚拟现实对你来说意味着什么21.2头戴式显示器的类型41.2.1桌面VR41.2.2移动VR41.3虚拟现实与增强现实的区别51.4应用与游戏51.5本书涵盖的内容81.6VR体

    2022年9月12日
    2

发表回复

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

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