鱼C论坛

 找回密码
 立即注册
查看: 1682|回复: 1

[已解决]关于switch语句的一个问题

[复制链接]
发表于 2019-12-24 20:16:15 | 显示全部楼层 |阅读模式
6鱼币
#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 编辑
  1. #include <stdio.h>

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

  5.     switch (x)
  6.     {
  7.     case 0 :
  8.         switch(y == 2)

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

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

  23.         {
  24.         case 1:
  25.             printf("$");
  26.         case 2:
  27.             printf("*");
  28.             break;
  29.         default :
  30.             printf("#");//和这个default
  31.         }
  32.     }

  33.     return 0;
  34. }
复制代码


另外,以后发帖记得加code
4201207.png

最佳答案

查看完整内容

另外,以后发帖记得加code
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-24 20:16:16 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻狍子嗷 于 2019-12-24 21:03 编辑
  1. #include <stdio.h>

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

  5.     switch (x)
  6.     {
  7.     case 0 :
  8.         switch(y == 2)

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

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

  23.         {
  24.         case 1:
  25.             printf("$");
  26.         case 2:
  27.             printf("*");
  28.             break;
  29.         default :
  30.             printf("#");//和这个default
  31.         }
  32.     }

  33.     return 0;
  34. }
复制代码


另外,以后发帖记得加code
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-15 05:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表