c语言关于for循环和switch的问题。求解答!

程序如下:

#include <stdio.h>
void main()
{
    int i;
    for(i=0;i<3;i++)
    {
        switch(i)
        {
        case 0:printf("this is 1\n");break;
        case 1:printf("this is 1\n");break;
        case 2:printf("this is 1\n");break;
        }
    }

}

运行结果
图片说明

这个for循环,3次。然后通过switch语句,判断i的值。

break只能和最内侧的switch匹配,而不是for

其实很简单,了解一下break的作用,break不止作为循环的跳出,他还支持switch开关语句的case的跳出。而一个break只有一次性作用(就像两个循环,只能作用一次,要么内层,要么外层),而根据语法或者就近原则,不管如何这里的break都是与case作用的。

你的代码里三种情况都是printf("this is 1\n");所以打印三次 this is 1

        case 0:printf("this is 1\n");break;
        case 1:printf("this is 1\n");break;
        case 2:printf("this is 1\n");break;

程序编写与运行结果相对应,输出正常。你想问的是什么?