switch case语句的嵌套中的选择问题

问题遇到的现象和发生背景

在switch中进行完嵌套语句后,不论下一语句的条件是什么都会进行。但是没有嵌套的时候,就会按照满足条件的语句进行。

问题相关代码,请勿粘贴截图
#include <cstdio>
int main(){
    int a=1,b=0;
    switch(a)
    {
        case 1:switch(b){
                case 0:printf("**0**");break;
                case 1:printf("**1**");break; 
            }
            
        case 2:printf("**2**");break;
        
        case 3:printf("**3**");break;
    }
    printf("\n");
    int x=1;
    switch(x)
    {
        case 0:printf("**0**");break;
        
        case 1:printf("**1**");break;
        
        case 2:printf("**2**");break;
    }
    return 0;
} 

运行结果及报错内容
**0****2**
**1**

我的解答思路和尝试过的方法
我想要达到的结果

为什么switch嵌套使用时嵌套条件进行完成后会直接进行下一case语句

这没break跳出

img


望采纳 ^.^

case 1部分末尾漏了break啊。如下在第12行增加了break;

#include <cstdio>
int main(){
    int a=1,b=0;
    switch(a)
    {
        case 1:
              switch(b)
              {
                case 0:printf("**0**");break;
                case 1:printf("**1**");break; 
              }
              break;
        case 2:printf("**2**");break;
        case 3:printf("**3**");break;
    }
    printf("\n");
    int x=1;
    switch(x)
    {
        case 0:printf("**0**");break;
        case 1:printf("**1**");break;
        case 2:printf("**2**");break;
    }
    return 0;
}