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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mac录屏工具_mac屏幕录制设置

    mac录屏工具_mac屏幕录制设置最近打算录制一些软件教程进行视频分享,所以找了很多如何在MAC上录制屏幕的相关文章。没想到MAC系统有自带的屏幕录像功能,而且非常简单好用!除此之外,还有几款比较专业的第三方录屏软件,在这里都一并分享,大家可以自行选择。(文中所附链接皆需复制到浏览器中打开)方法一:在macOSMojave中使用自带工具如果你的Mac系统和我一样是macOSMojave,可以直接快捷键Shif…

  • matlab作品_葫芦丝最炫民族风

    matlab作品_葫芦丝最炫民族风%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Mostshiningnationalwind//最炫民族风onMatlab%TheModificationisfrom”canon”,notbymefs=44100;%sampleratedt=1/fs;T16=0.125;t16=[0:dt:T16];[tempk]…

  • cnpm 安装yarn[通俗易懂]

    cnpm 安装yarn[通俗易懂]cnpm安装yarn一句命令搞定cnpminstall-gyarn–registry=https://registry.npm.taobao.org再配置下源yarnconfigsetregistryhttps://registry.npm.taobao.org-gyarnconfigsetsass_binary_si…

  • 不让Editplus保存时java文件时生成.bak文件

    不让Editplus保存时java文件时生成.bak文件

  • 质量工具因果图_质量管理因果图例题

    质量工具因果图_质量管理因果图例题前言在项目中,我们经常需要用到不同的工具对项目质量进行评审。使用不同的质量工具可能得到的结果不太一样。下面简单说下项目中常用到的质量分析工具因果图。释义:什么是因果图因果图又称为石川图、Ishikawa或鱼骨图,它把影响质量诸因素之间的关系以树状图的方式表示出来,使人一目了然,便于分析原因并采取相应的措施。它是一种在问题发生后,寻找根本原因的一种方法。它取名石川图是因为它是由日

  • 测试算法有效性:显著性分析[通俗易懂]

    测试算法有效性:显著性分析[通俗易懂]前言今天偶尔刷到一篇博客如下,里面涉及到了很多数学小知识点,基本都是很实用的数学常识,不论从事什么领域,其实都很有帮助,为此记录一下吧。https://mp.weixin.qq.com/s/RLbrf-HNc79P7jaU2Sr29Q下面分多个大标题,记录一下各个使用的点显著性分析这是非常重要了,可以参考https://blog.csdn.net/championkai/article/details/80206704基本上我们要分析两个变量或多个变量之间的差异有多大,就会用到显

    2022年10月29日

发表回复

您的电子邮箱地址不会被公开。

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