zoukankan      html  css  js  c++  java
  • C语言-break和continue

    先看以下switch语句的程序:

        scanf("%d",&score);

        if (score>=0 && score<=100) {

        

            switch (score/10) {

                case 10:

                case 9:

                    grade = 'A';

                    break;

                case 8:

                    grade = 'B';

                    break;

                case 7:

                    grade = 'C';

                    break;

                case 6:

                    grade = 'D';

                    break;

            

                default:

                    grade ='N';

                    break;

            }

            printf("该成绩转换为等级制为%c!!! ",grade);

        

        }else

            printf("输入不合法!!!! ");

    在程序中可见每个case分支后面都有一个break语句,这是因为在switch语句中每个case都是互斥的,每一个case都是独立的一种情况,所以不管最后程序走到哪个分支并执行,都要从这儿跳出去到switch之外,而break就起到了跳出程序的作用。

    其实break不止是可以用在switch语句中,也可以用在for循环和while循环中,用来跳出循环。

    还有一个和break比较相近的控制符,就是continue,它是用来控制程序跳出本次循环,直接进入下一个循环的,以下分别以两个程序做解读:

    int i = 0;
        for (; i<10; i++) {
           
            if (i%2==0) {
                continue;
            }else{
                printf("%d	",i);
            }
            
        }

    运行以上程序,打印结果为:

    1    3    5    7    9    Program ended with exit code: 0

    而运行一下程序,会有什么输出呢?

       int i = 0;
        for (; i<10; i++) {
           
            if (i%2==0) {
                break;
            }else{
                printf("%d	",i);
            }
            
        }

    程序的输出为:

    Program ended with exit code: 0

    也就是说在使用break 的时候程序没有输出任何东西,这是因为循环第一次是i=0,此时0的余数就是0,符合break的条件,程序直接从此处跳出循环外,并未执行下一次循环,而上面使用continue的时候,程序在continue处停止执行本次循环,直接进行第i+1次循环,也就是说continue跳过本次循环,进行下次循环,而break直接跳出循环体。

    以下摘自csdn,供加深理解:

    reak和continue的区别如下: 
    1. break可用于switch语句,表示跳出整个switch块,而continue则不能用于switch语句 
    2. 它们都可用于循环语句的循环体,所谓的区别也应该是它们对循环次数的影响不同。break用于立即退出当前循环,而continue仅跳过当次循环(本次循环体内不执行continue语句后的其它语句,但下次循环还会执行)。举例说明。 
    int i; 
    int s = 0; 
    for (int i = 1; i <= 10; i++) 

    if (i == 6) break; 
    s += i; 

    上面的循环会因为break语句而在i=6时提前终止,这样s的最终值就是1+2+3+4+5 
    如将break换成continue 
    int i; 
    int s = 0; 
    for (int i = 1; i <= 10; i++) 

    if (i == 6) continue; 
    s += i; 

    当i=6时就不会将i累加到s中,s的最终值是1+2+3+4+5+7+8+9+10,唯独少一个6 

  • 相关阅读:
    IIS7.5 HTTP 错误 500 调用loadlibraryex失败的解决方法
    VB6.0 excel 导入和导出
    SQL 实现 成绩表形式的转换
    计算月初和月末,年初和年末的日期
    一篇文章学LINQ(原创)
    浙江省仙居县发现罕见丹霞地貌大型“天坑”
    浙江省仙居县发现特大型丹霞地貌洞穴
    EFUpdate
    163邮件出错:不允许使用邮箱名称。 服务器响应为: authentication is required,smtp7,C8CowEDpS0+Uke9VvSmXBg--.546S2 1441763733
    vmware 安装dos注意
  • 原文地址:https://www.cnblogs.com/jiwangbujiu/p/5263544.html
Copyright © 2011-2022 走看看