C 语言循环和 switch 中的 break 和 continue

C 语言循环和 switch 中的 break 和 continue

野原新一 153 2022-08-02

问程序的输出结果

#include<stdio.h>
int main(void){
    int i;
    for(i=1;i<10;i++){
        switch (i%3) {
            case 0:
                i+=3;
                break;
            case 1:
                i+=4;
                continue;
        }
        i++;
    }
    printf("%d\n",i);
}

答案是 11。

问题的关键在于循环和 switch 中的 break 和 continue 的不同。在 switch 中是响应 break 但不响应 continue 的,换句话说,在 switch 中使用 break,break 是针对 switch 的;而在 switch 中使用 continue,continue 是针对 for 的。

具体到这道题来说,第一次循环所响应的是 case 1,i 变成 5 后直接 continue,i 自增为 6 后继续循环;此时响应的是 case 0,i 自增为 9 后 break 出 switch,执行接下来的语句 i++,自增为 10;之后在下一次 for 循环开始时自增为 11,不满足 i<10 条件,跳出 for 循环。最终输出的 i 值即为 11。

C语言中的四种循环:while,do while,goto,for。一般不用goto语句

break语句不能用于循环语句和switch语句之外的任何其它语句