switch语句中()出现判断语句的情况

如此题,在switch的括号中出现的是一个判断语句,要做对此题需明晰以下内容:

若switch()语句的括号中是一个判断语句eg.(a!=3)(b<7)(c==2)此类时,

后面的case关键看有没有0和1,故而分为以下两种情况:

  1. 如若有0和1,则0表达的意思是错误,1表达的意思是正确,若判断语句正确就执行1的语句,若判断语句错误就执行0的语句,若有0但是1不存在,则错误的话依旧执行0的语句,正确的话因为1不存在,无可执行,此时有default就执行default,没有default则无输出。若有1而不含0,则正确时依旧执行1的语句,错误时,无可执行,此时有default就执行default,没有default无输出。
  2. 即不含0也不含1,则可以理解为既无正确的输出按钮也无错误的输出按钮,无可执行,此时有default就执行default,没有default无输出。

 

 了解上述内容后让我们来完成此题:

此题将a=2代入外层switch函数的判断语句中,发现判断结果2>0为正确,故开始执行外层switch函数的case 1的语句,遇到了内嵌的switch函数,将b=7带入内嵌switch函数的判断语句中,发现7<0为错误,但并无case 0存在,也无default存在,故此语句中无任何输出值。

因外层switch语句的case 1与case 0语句中无break存在,故继续执行case 0的情况,带入c=5于case 0的内嵌switch函数的判断语句中,发现5==5为正确,故执行此内嵌switch语句中case 1的操作:打印出*,后遇到break,此内嵌的switch流程结束,再度回到外层的switch中,因外层函数还是没有break存在,继续执行default中的操作:打印出&,最后,外层switch也结束。执行最后的换行操作,最终结果为:*&

动手修改几个值,自己试一试吧!

 

 #include "stdafx.h"
#include "stdio.h"
void main()
{
    int a=2,b=7,c=5;
switch (a>0)
{
case 1: switch (b<0) 
     {
       case 1: printf("@"); 
            break;
       case 2: printf("!"); 
           break ;
        }
case 0: switch (c==5) 
        {
         case 1: printf("*") ;
             break ;
         case 2: printf("#") ;
             break ;
         default : printf("#") ;
             break ;
        }
default : printf("&");
}
printf("\n");
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值