这段代码的输出值是多少?用VS2010编译总是报错,不知为啥……

img

#include <stdio.h>

int main( )
{
     int x=1, y=1, z=1;
     switch(x)
     {
        case 1:
            switch(y)
            {  
                case 1: printf("!!"); break;
                case 2: printf("@@"); break;
                case 3: printf("##"); break;
            }
      case 0:
            switch(z)
            {      
                case 0: printf("$$");
                case 1: printf("^^");
                case 2: printf("&&");
            }
       default: printf("**");
} 
    return 0;
}


会输出

!!^^&&**

switch()中如果没有用break跳出会连续执行之后所有 case 内的代码

执行过程看注释

#include <stdio.h>
int main( )
{
     int x=1, y=1, z=1;
     switch(x)
     {
        case 1: //x是1 从这里开始执行
            switch(y)
            {
                case 1: printf("!!"); break; //y是1 执行printf("!!");
                                             //并用break 跳出switch(y)语句块,到A处继续执行
                case 2: printf("@@"); break;
                case 3: printf("##"); break;
            }

        // A处  没有用break跳出会连续执行之后 case 内的代码
        case 0:
            switch(z)
            {
                case 0: printf("$$");
                case 1: printf("^^"); //z是1 从这里开始执行
                case 2: printf("&&"); //没有用break跳出会连续执行之后 case 内的代码
            }
        default: printf("**"); //没有用break跳出会连续执行之后 case 内的代码
    }
    return 0;
}

如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮

img