continue和break

加入嵌入式技术QQ群:398294860,免费获取嵌入式技术文档,嵌入式最新学习路线指南,更多嵌入式教程,访问宅学部落淘宝店:https://wanglitao.taobao.com/

在一次循环过程中,虽然循环条件为真,但有时我们想要结束循环,这时候break和continue就用上了战场。以下面的程序为例:

//break.c
#include <stdio.h>

int main(void)
{
    char c;
    while(1)
    {
        printf("zhaixue.cc\n");
        printf("input choice(y/n): ");
        scanf("%c", &c);
        if(c == 'n')
            break;
        getchar();
    }

    return 0;
}

在上面的程序中,我们使用一个死循环while(1)来无限次打印字符串“zhaixue.cc”,但是在while循环体内,每执行完一次循环,我们都需要用户输入一个选择:y或n,来决定继续循环还是结束循环。C语言提供了关键字break用来结束当前的循环,调到循环体外的代码继续执行。

编译运行上面的程序,程序的运行结果为:

root@ubuntu:/home/code# gcc break.c 
root@ubuntu:/home/code# ./a.out 
zhaixue.cc
input choice(y/n): y
zhaixue.cc
input choice(y/n): y
zhaixue.cc
input choice(y/n): n

break用来跳出当前的循环,跳到循环体外的代码执行。如果我们只想结束本次循环,然后继续下一次循环,此时可以使用continue来实现。

//continue.c
#include <stdio.h>

int main(void)
{
    char c;
    int count = 0;
    while(1)
    {
        count++;
        printf("input choice(y/n): ");
        scanf("%c", &c);
        getchar();
        if(c == 'n')
            continue;
        printf("zhaixue.cc: %d\n", count);
    }

    return 0;
}

在上面的程序中,为了演示continue的执行过程,我们将printf函数的打印放到了循环体的最后,并引入一个变量count,用来记录循环体的循环次数。在程序运行过程中,每次执行循环体,都会提示用户,是否继续本次循环(输入y),或者结束本次循环(n)。当用户输入y时,循环体正常执行;当用户输入n时,continue会结束本次循环,并接着进行执行下一次循环。

程序的运行结果如下:

root@ubuntu:/home/code# gcc loop.c 
root@ubuntu:/home/code# ./a.out 
input choice(y/n): y
zhaixue.cc: 1
input choice(y/n): y
zhaixue.cc: 2
input choice(y/n): n
input choice(y/n): n
input choice(y/n): y
zhaixue.cc: 5
input choice(y/n):

通过程序的运行结果我们可以看到,当前的程序一共循环了5次,但是只打印了3次字符串,这是因为我们输入了2次n,continue结束了本次循环,没有执行下面的printf函数。

专门为嵌入式设计的C语言进阶视频教程:《C语言嵌入式Linux高级编程》,一共9期,涉及计算机体系结构、ARM汇编与反汇编、程序的编译链接原理、堆栈内存、Linux内核的面向对象编程思想、多任务编程、C语言的模块化编程等专题,具体课程详情可点击淘宝:C语言嵌入式Linux高级编程