鱼C论坛

 找回密码
 立即注册
查看: 1334|回复: 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 编辑
#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
4201207.png

最佳答案

查看完整内容

另外,以后发帖记得加code
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-24 20:16:16 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻狍子嗷 于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 10:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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