从头学C(30)break语句与continue语句

0

第三章 控制流 >> 3.7 break语句与continue语句

1. break:跳出循环语句 或 switch语句

如同从switch语句中提前退出一样,break语句也可以从for、while、do-while循环中立即跳出。

要注意的是,一个break语句只能从最内层的循环中跳出。也就是说,对于嵌套的循环语句或switch语句,break也只是仅仅从该语句所在的循环中跳出来,仍会处于上一级的循环控制下。

以trim函数为例,该函数用于删除字符串尾部的空格符、制表符和换行符,如果最右边的字符不是这些字符,则使用break退出循环。

#include <stdio.h> 
#include <string.h>
        
/* trim: remove trailing blanks, tabs, newlines */
int trim(char s[])
{
        int n;

        for (n = strlen(s)-1; n >= 0; n--)
                if (s[n]!= ' ' && s[n]!= '\t' && s[n]!= '\n')
                        break;
        s[n+1] = '\0';
        return n;
}

int main()
{
        char str[] = {'1', '2', '3', ' ', '\t', '\n'};
        int len = 0;

        printf("before: %s#END\n", str);
        len = trim(str);
        printf("after: Len = %d\n", len);
        printf("after: %s#END\n", str);

        return 0;
}

2. continue:执行下一次循环

用于使for、while、do-while语句开始下一次循环的执行。

在while与do-while语句中,continue语句的执行意味着立即执行条件测试部分;而在for循环中,则意味着立即执行递增循环变量部分。

而且continue只适用于循环语句,不适用于switch语句。当然你仍可以在switch语句中使用continue语句,不会这个continue是用于控制switch语句上一层的循环语句(for、while或do-while)。

也来看一个continue语句的例子,下面这段程序用于处理数组a中的非负元素:

for (i = 0; i < n; i++)
{
        if (a[i]< 0)   /* skip negative elements */
                continue;
        ...     /* handle positive elements */
}

如果某个元素为负值,则跳过(不作处理)。

Leave A Reply