姬世鹏 发表于 2019-12-24 20:16:15

关于switch语句的一个问题

#include <stdio.h>

int main()
{
        int x = 0,y = 2,z = 3;
       
        switch (x)
        {
                case 0 :switch(y == 2)
                {
                        case 1:printf("*");break;//根据检验输出了这个case1和下一个default,但是我不能理解为什么y==2 会和case1进行匹配
                        case 2:printf("%");break;
                }
                case 1 :switch(z)//还有为什么还会执行这个case1?
                {
                        case 1:printf("$");
                        case 2:printf("*");break;
                        default :printf("#");//和这个default
                }
        }
       
        return 0;
}

傻狍子嗷 发表于 2019-12-24 20:16:16

本帖最后由 傻狍子嗷 于 2019-12-24 21:03 编辑

#include <stdio.h>

int main()
{
    int x = 0,y = 2,z = 3;

    switch (x)
    {
    case 0 :
      switch(y == 2)

//此处y==2是判断y是否等于2,你这里y是等于
2,所以y==2的结果是1(即为真)。
      {
      case 1:
            printf("*");
            break;//根据检验输出了这个case1和下一个default,但是我不能理解为什么y==2 会和case1进行匹配
// 如上所述,此处与case 1配对。
      case 2:
            printf("%");
            break;
      }
    case 1 :
      switch(z)//还有为什么还会执行这个case1?

// 运行后发现不会执行case1,因为没有匹配项,所以执行default。

      {
      case 1:
            printf("$");
      case 2:
            printf("*");
            break;
      default :
            printf("#");//和这个default
      }
    }

    return 0;
}

另外,以后发帖记得加code
页: [1]
查看完整版本: 关于switch语句的一个问题