一开始Switch判断n,如n=1则执行,m变成3,我能懂,可是为什么下一句case 2时,n≠2啊,为什么也执行了


int main(void)
{
    int n = 1;
    int m = 2;
    switch(n)
    {
        case 1:
            m++;
        case 2: 
            n++;
        case 3:
            switch (n)
            {
                case 1:
                    n++;
                case 2:
                    m++;
                    n++;
                    break;
            }
        case 4:
            m ++;
            break;
        default :
            break;
    }
    printf("m=%d,n=%d",m,n);
    return 0;
}

因为你第一 个 case 1 没有加break ,它就继续执行下面的语句了

每个case结束要加break;否则会一直向下执行的
case 1:
m++;
break;
case 2:
n++;
break;

因为CASE后面没加Break的话,就会一直执行下去,直到遇到Break.