【switch】语句中switch和case后的语句和值可以是什么形式?

本文详细解释了switch语句作为分支结构的特性,强调了switch后的整型表达式可以是数字或字符,以及case后的值必须是整型常量。特别指出,字符通过ASCII码值作为整数处理可用于switch结构。
摘要由CSDN通过智能技术生成

switch语句是分支结构的一种,是一种特殊形式的【if…else】结构,用于判断条件有多个结果的情况。它把多重的【else  if】改成更易使用、可读性更好的形式。

【switch】语句的格式如下:

switch (expression){

case value1 : statement

case value2 : statement

default : statement

}

▲注意:

◎switch 后的 expression 必须是整型表达式

◎case 后的值必须是整型常量表达式

▲详细解释

接下来我们说说这个“整型表达式”和“整型常量表达式”都可以是什么形式。

❶首先先说一下switch后的整型表达式。

说到整型,大家可能第一反应都是像“n%3”、“day”等这样表示的是一个数的表达式,这些当然是可以的,符合要求的。

但是!还有一种形式,如下:

int main()

{

    char ch = 'w';

    scanf("%c", &ch);

    switch(ch)

    {

    case 'a' :

            printf(…);

            break;

    case 'b' :

            printf(…);

            break;

    ……

    }

    return 0;

}

switch 后面的语句!也可以是字符!!!

因为字符是以ASCII码值的形式进行储存的,而ASCII码对应的值是整数。所以一个字符的值就是整数,也就是字符归为整型家族,可以放入switch后。

❷case后的值必须为整型常量表达式。

在这里我就举例说明。

㈠可以的形式:

①case 2 + 1 :

②case 4 :

 

㈡错误的形式:

①int m = 4;

   switch(m)

  {

   case m :

这是绝对错误的❌不可以这么写

因为这里的m是一个变量,而定义中要求的必须是一个常量,所以不可以。

 

~~~~今天的分享就到这里啦~~~~!!!

第一次写博客!!如有问题请多多指教!!!

欢迎大家来找我一起学习!!!一起进步!!!!

 

 

 

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 是的,每个case语句标号后面可以没有break语句。如果没有break语句,则程序将继续执行下一个case语句,直到遇到break语句switch语句结束为止。这种情况下,我们称之为“case穿透”。但是,需要注意的是,如果没有break语句,可能会导致程序逻辑错误或不可预期的行为,因此在使用switch语句时应特别小心。 ### 回答2: 在switch语句,每个case语句标号后面可以没有break语句。这是因为switch语句的执行特性。 当执行到switch语句时,会根据括号内表达式的选择与之匹配的case标号,并从该标号开始执行。如果不使用break语句,程序会继续执行下一个case标号的代码,无论其是否匹配。这种情况被称为"穿透"。 "穿透"的作用在某些情况下是很有用的。例如,当多个case需要执行相同的代码块时,可以避免代码的重复编写。在这种情况下,可以在匹配的case标号后面省略break语句,使程序继续执行下一个case标号的代码。 例如,假设有一个根据星期几输出不同的问候语的程序。星期一到星期五需要输出"工作日加油!",星期六和星期日需要输出"放松休息吧!"。可以如下编写代码: ``` switch(weekday) { case 1: case 2: case 3: case 4: case 5: System.out.println("工作日加油!"); break; case 6: case 7: System.out.println("放松休息吧!"); break; default: System.out.println("输入错误!"); } ``` 在上述代码,我们省略了case 1-5和case 6-7后面的break语句。这样,当输入1-5时,程序会输出"工作日加油!";当输入6或7时,程序会输出"放松休息吧!";当输入其他时,程序会输出"输入错误!"。 总之,在switch语句,每个case语句标号后面可以没有break语句。这样可以实现"穿透"的效果,避免不必要的代码重复。但需要根据具体情况来决定是否使用break语句,以确保程序的正确执行。 ### 回答3: 在switch语句,每个case语句标号后面可以没有break语句。这种情况下,程序会继续执行下一个case的代码,并不会自动跳出switch语句块。 当case语句后面没有break语句时,我们称之为case穿透。这种情况下,即使满足某个case的条件,程序也会继续向下执行,并执行符合条件的后续case语句的代码。 这种设计有时可以简化代码逻辑,实现一些特殊的功能。例如,当多个case条件执行的代码逻辑相同,我们可以让多个case共享同一段代码,而不必在每个case都写入相同的代码。 另外,我们也可以通过在某个case触发break语句来跳出整个switch块,即使后续case的条件满足,也不会再执行后续case的代码。 然而,如果没有适当地使用break语句或者没有设置默认的case,就可能会导致意外的结果。因为在没有break语句的情况下,程序会继续执行下一个case的代码,从而可能造成逻辑错误。 因此,在使用switch语句时,我们应该根据具体的编程需求来决定是否需要在每个case语句后面添加break语句,或者是否需要使用默认的case。这样可以确保代码的逻辑正确性和可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值