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)
上一篇 2022年5月30日 下午5:16
下一篇 2022年5月30日 下午5:16


相关推荐

  • 上海it外包公司排名_it外包公司排行榜怎么来的?

    上海it外包公司排名_it外包公司排行榜怎么来的?在我们平时上网的时候,总是看到在一些中介网站上会有一些IT外包公司排行榜,这些排行与其它行业的排行榜一样,指导着我们的选择,为我们的外包工作指出了一条相对明晰的道路。那到底这些网站上的排行准不准确呢?下面我们就为大家解析一下。1.名气和口碑。也许我们对外包行业不是很懂,但是在看其它行业如房地产,家电等与大众息息相关的产业时,就会发现但凡上榜的都是很有名气的,且口碑也很好。这就表明了排行还是比较…

    2022年6月14日
    48
  • 基于H5+js开发一款音乐播放器

    基于H5+js开发一款音乐播放器前言:当下音乐播放器不胜其数,为了更好的掌握一些东西,我们来自己制作一个音乐播放器。文章目录:一.开发环境:二.页面视图:1.主文件入口(首页):2.音乐播放界面:三.功能实现(1)、index.html:(2)、播放音乐(music.html):(3)、样式文件(index.css):四.项目地址:一.开发环境:开发工具:HbuliderX;框架:Vant,Mui,Vue后端:Node二.页面视图:正常情况下我们的开发都会有构思图以及模块规划等过程,我们先来看看大致的页面构图:1

    2022年6月29日
    30
  • 永恒之蓝漏洞入侵_永恒之蓝漏洞探测

    永恒之蓝漏洞入侵_永恒之蓝漏洞探测一、基础知识介绍:1.何为永恒之蓝?永恒之蓝(EternalBlue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎…

    2022年10月17日
    6
  • 猫学习IOS(五岁以下儿童)UI之360其他下载管理器广场UI

    猫学习IOS(五岁以下儿童)UI之360其他下载管理器广场UI

    2022年1月14日
    62
  • java解析XML为对象「建议收藏」

    java解析XML为对象「建议收藏」详解Java解析XML的四种方法http://developer.51cto.com 2009-03-3113:12 cnlw1985 javaeye 我要评论()XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。
     
    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献

    2022年5月4日
    41
  • swig入门

    swig入门最近发现有些漏洞不能扫描 原来是没有需要的库 这些库原来是用 SWIG 生成的一些接口程序 于是顺便小研究了下这个 SWIG 是怎么回事 下面是摘于 SWIG 中文网 http swig minidx com SWIG 是个帮助使用 C 或者 C 编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具 SWIG 能应用于各种不同类型的语言包括常用脚本编译语言例如 Perl PHP Python

    2026年3月19日
    2

发表回复

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

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