switch小问题,求解答

img


一个困扰很久的小问题
int n=1
int m=2
switch(n)这里(n)为入口 m是怎么进去的呢

switch(n)的意思是根据n的值给出分支选择,n是依据,不是入口。你的m和n都是定义在main函数中,同样在main函数的switch语句必然能调用到m

不是你理解的n为入口,n是case后面的值,你这个程序意思是n=1,那就执行m++,n=2,那就执行n++,switch里面可以访问前面的定义的变量。
你这里case 1和case 2没有break,所以会继续执行,执行case 1之后,执行case 2后执行case 3,接着因为case 3也没有break,case3是在switch里面有break,所以会继续case4。

第一步 n=1, 执行case 1后,此时m=3 n=1
第二步 执行case2后 ,此时m=3 n=2
第三步 执行case3 ,此时n=2,所以执行case 3中的case 2,执行完后m=4 n=3
第四步 执行case4,执行完后m=5 n=3

所以最后是 m=5 n=3

c++中的swith有break吗,是不是没有break啊

因为每个 case 后面都没有break; ,所以从 n = 1开始按顺序往下执行每个 case 。

【以下回答由 GPT 生成】

问题的关键在于如何在switch语句的case中判断变量m的取值。在C语言中,switch语句是通过比较变量的值与case中的值是否相等来进行条件判断的。所以,我们需要在case中逐一判断变量m的取值。

下面是一个示例代码,展示了如何使用switch语句判断变量m的取值:

int n = 1;
int m = 2;

switch (n) {
    case 1:
        switch (m) {
            case 1:
                // m的取值为1时执行的代码
                break;
            case 2:
                // m的取值为2时执行的代码
                break;
            case 3:
                // m的取值为3时执行的代码
                break;
            default:
                // m的取值不是1、2或者3时执行的代码
                break;
        }
        break;
    case 2:
        // n的取值为2时执行的代码
        break;
    case 3:
        // n的取值为3时执行的代码
        break;
    default:
        // n的取值不是1、2或者3时执行的代码
        break;
}

在上述代码中,首先通过switch语句判断变量n的取值,然后在每一个case语句中再次通过switch语句判断变量m的取值。根据需要,你可以在每个case中编写相应的代码来处理不同的m取值情况。

需要注意的是,每个case后需要加上break语句,以避免出现"穿透"现象。另外,代码中的default语句是可选的,用于处理n的取值不是1、2或者3时的情况。

希望以上内容对你有所帮助,如果有任何疑问,请随时追问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^