1.7 C语言的控制流之三:break语句与continue语句、goto语句与标号

一、break语句与continue语句

1.break语句

break语句可用于从for、while、与do-while等循环中提前退出,也可从switch语句中提前退出。break语句能使程序从switch语句或最内层循环中立即跳出。
例1:修改上一博客中的switch语句

/* 测试sbreak语句       */
#include<stdio.h>

int main(int argc, char *argv[])
{
        int c;

        printf("请输入您想选择的数字:");
        scanf("%d", &c);

        switch (c)
        {
                case 0: printf("H\n");break;
                case 1: printf("E\n");break;
                case 2: printf("LL\n");break;
                case 3: printf("O\n");break;
                case 4: printf("W\n");break;
                case 5: printf("O\n");break;
                case 6: printf("R\n");break;
                case 7: printf("L\n");break;
                default: printf("D\n");break;
        }
}
~/test/c.Language --> :./break_test 
请输入您想选择的数字:5
O
~/test/c.Language --> :./break_test 
请输入您想选择的数字:9
D

执行break语句以后,就会跳出switch语句。
例2:
当我们有break语句时:

/* break语句测试 */
#include<stdio.h>

int main(int argc, char *argv[])
{
        int i;

        for (i=0; i<10; i++)
        {
                break;
                printf("%d\n", i);
        }

        return 0;
}
~/test/c.Language --> :./switch_test2    
~/test/c.Language --> :

此时将break语句去掉:

/* break语句测试 */
#include<stdio.h>

int main(int argc, char *argv[])
{
        int i;

        for (i=0; i<10; i++)
        {
                printf("%d\n", i);
        }

        return 0;
}
~/test/c.Language --> :./switch_test2  
0
1
2
3
4
5
6
7
8
9

2. continue语句

continue语句与break语句是相关联的,但它没有break语句常用。continue语句用于使for、while或do-while语句开始下一次循环的执行。在while与do-while语句中,continue语句的执行意味着立即执行测试部分,在for循环中则意味着使控制转移到递增循环变量部分。continue语句只用于循环语句,不用于switch语句。某个循环包含的switch语句中的continue语句,将导致进入下一次循环。
例:
先测试带有continue的语句

/* 测试continue语句 */
#include<stdio.h>

int main(int argc, char *argv[])
{
        int i;

        for (i=0; i<10; i++)
        {
                continue;
                printf("OK\n");
        }

        return 0;
}
~/test/c.Language --> :./continue_test1 
~/test/c.Language --> :

此时不输出任何东西。

再将continue去掉

1 /* 测试continue语句 */
  2 #include<stdio.h>
  3 
  4 int main(int argc, char *argv[])
  5 {
  6         int i;
  7 
  8         for (i=0; i<10; i++)
  9         {
 10                 printf("OK\n");
 11         }       
 12         
 13         return 0;
 14 } 
~/test/c.Language --> :gcc -o continue_test1 continue_test1.c 
~/test/c.Language --> :./continue_test1                       
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK

当代码中有continue语句时,并不执行后面的printf语句,而是直接返回for循环中执行i++,再执行i<10的判断语句。

二、goto语句与标号

goto语句也称为无条件转移语句,可以跳出多重循环。
标号的命名同变量命名的形式相同,标号后面要紧跟一个冒号。标号可以位于对应的goto语句所在的函数的任何语句的前面。标号的作用是整个函数。
其一般格式如下

goto 语句标号;
...
...
语句标号:			//此时一定要带冒号

其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
例:

/* 测试goto语句 */
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
        while (1)
        {
                while (1)
                {
                        goto a;                 //跳转到a
                }
        }
a: printf("OK!\n");             //goto语句要跳转的地方

        return 0;
}

执行情况如下:

~/test/c.Language --> :gcc -o goto goto.c
~/test/c.Language --> :./goto 
OK!

虽然此处使用了两个死循环,但是在遇到goto语句的时候还是可以直接跳出。
【注】
goto语句最常用的用法是终止程序在某些深度嵌套的结构中的处理过程,例如一次跳出两层或多层循环。这种情况下使用break语句是不能达到目的的,它只能从最内层循环退出到上一级的循环。
在大多数情况下,使用goto语句的程序比不适用goto语句的程序段要难以理解和维护,书上建议少使用goto语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值