case后需要手动break

switch(i){
case 1:
语句1;
break;
case 2:
语句2;
break;
default:
语句3;
break;
}

上述代码表示

  • i == 1时执行语句1
  • i == 2时执行语句2
  • 其他情况执行语句3
switch(i){
case 1:
语句1;
case 2:
语句2;
default:
语句3;
break;
}

如果漏掉break

  • i == 1时执行语句1、2、3
  • i == 2时执行语句2、3
  • 其他情况时执行语句3

switch内的变量定义

变量没有定义在语句块内

  • 变量的作用域是整个switch语句

  • 内部定义的变量只能声明,不能初始化。

假设上述代码合法,则一旦控制流直接跳到false分支,也就同时略过了变量file_name和ival 的初始化过程。此时这两个变量位于作用域之内,跟在false之后的代码试图在尚未初始化的情况下使用它们,这显然是行不通的。因此C++语言规定,不允许跨过变量的初始化语句直接跳转到该变量作用域内的另一个位置。

变量定义在语句块内

  • 变量的作用域是case语句块内
  • 内部定义的变量可以初始化
case ture:
{
//正确:声明语句位于语句块内部
string file_name = get_file();
//..
}
break;
case false:
if ( file_name.empty()) //错误:file_name不在作用域内
break;

表述多情况时不能用逗号

switch(i){
case 1,2,3,4: //错误写法
cout<<"i = 1,2,3,4"<<endl;
break;
default :
cout<<"in default"<<endl;
break;
}

上述程序应该写为

switch(i){
case 1: //正确写法
case 2:
case 3:
case 4:
cout<<"i = 1,2,3,4"<<endl;
break;
default :
cout<<"in default"<<endl;
break;
}

也可写为

switch(i){
case 1: case 2: case 3: case 4: //正确写法
cout<<"i = 1,2,3,4"<<endl;
break;
default :
cout<<"in default"<<endl;
break;
}

使用switch语句的注意事项的更多相关文章

  1. java switch语句注意的事项

    1.switch语句使用的变量只能是byte.char.short.string数据类型. 2.case后面gender数据必须是一个常量. 3.switch的停止条件: switch语句一旦比配上了 ...

  2. Java switch语句使用注意事项

    1.多个case后面的值不可以重复 2.switch后面小括号的数据类型(case 后面的数值类型)只能是以下类型 基本数据类型: byte / short / char / int 引用数据类型:S ...

  3. Java学习:switch语句使用的注意事项

    switch语句使用的注意事项: 多个case后面的数值不可以重复. switch后面的小括当中只能是下列数据类型: 基本数据类型:byte/short/char/int 引用数据类型:String字 ...

  4. java switch语句注意事项

    /* switch语句的使用注意事项: 1.多个case后面的数据不可以重复 2.switch后面的小括号当中只能是下列数据类型: 基本数据类型:byte . short.char.int 引用数据类 ...

  5. Java语法基础(三)----选择结构的if语句、switch语句

    [前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过 ...

  6. 选择结构if语句和switch语句的区别

    ------- android培训.java培训.期待与您交流! ---------- 1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if( ...

  7. switch语句以及三种循环语句的总结

    1:switch语句(1)格式:switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n+1;break;} 格式解释说明: ...

  8. [Day4]Switch语句、数组、二维数组

    1.选择结构switch (1)格式 switch (表达式){ case 目标值1: 执行语句1; break; case 目标值2: 执行语句2; break; ...... case 目标值n: ...

  9. if 结构和三目运算和switch语句

    if语句需要注意的地方: if判断只能接一个语句,存在多个语句时,用块语句表示{},若在if判断后 直接加“:”相当于if判断后加一个空语句,即使条件成立什么也不会干! 1. if的第一种形态(真假) ...

  10. 【JS】332- 为什么我更喜欢对象而不是 switch 语句

    昨天偷懒了,欢迎点击关注???这样我就多更大的动力日更了- 正文从这里开始~~~ 最近(或者不是最近,这完全取决于您什么时候阅读这边文章),我正在跟我的团队伙伴讨论如何去处理这种需要根据不同的值去处理 ...

随机推荐

  1. .NET8 Blazor 从入门到精通:(二)组件

    目录 Blazor 组件 基础 路由 参数 组件参数 路由参数 生命周期事件 状态更改 组件事件 Blazor 组件 基础 新建一个项目命名为 MyComponents ,项目模板的交互类型选 Aut ...

  2. containerd在线部署

    containerd的作用以及跟docker的区别 Containerd是一个用于管理容器生命周期的开源项目.它最初是从Docker项目中分离出来的,现在已经成为了一个独立的项目.它可以用作容器镜像管 ...

  3. RDMA简介

    RDMA(Remote Direct Memory Access) RDMA顾名思义是一种直接访问内存技术.它能够实现的是一台计算机内存到另一台计算机内存之间的通过网络直接访问,不涉及两台计算机的操作 ...

  4. 为什么说 Swoole 是 PHP 程序员技术水平的分水岭?

    大家好,我是码农先森. 谈到这个话题有些朋友心中不免会有疑惑,为什么是 Swoole 而不是其他呢?因为 Swoole 是基于 C/C++ 语言开发的高性能异步通信扩展,覆盖的特性足够的多,有利于 P ...

  5. uniCloud 云开发Dome

    实现账号密码登录,注册, 信息图片上传与查看 项目地址:https://gitee.com/jielov/uni-cloud_development 先创建云服务空间 与云函数 可参考 https:/ ...

  6. 报错解决:partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most likely due to a circular import)

    在运行jupyter 时候报错'partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most ...

  7. 用描述程序的方式emo,扎心了...

    用描述程序的方式emo,扎心了... 众所周知写程序是个枯燥无聊的过程,再加上生活的不顺与坎坷,当程序语言与emo结合起来,看谁还说程序员不懂感情! 首当其冲的就是循环语句了 世界上最寂寞的感觉,是我 ...

  8. 携手华为云WeLink,合合信息旗下名片全能王推动人脉管理数智化升级

    名片是商务场景中信息传递的重要载体.在无纸化办公日益兴盛的当下,数字名片逐渐被广大职场人士接受,成为商务交流的新方式.近期,合合信息旗下名片全能王与华为云WeLink联合研发,升级数字名片" ...

  9. OIDC – 关于 SAML 和 ADFS

    前言 最近听朋友说, 正在使用 ADFS 做 SSO, 哎哟. 我都是用 OIDC 做的, 这个 ADFS 是啥? 没听过. 于是搜索了一下, 这里先做一个小记入. ADFS 介绍 参考: stack ...

  10. 网络服务性能优化:Wrktcp与Perf工具详解

    wrktcp安装 码云地址:https://gitee.com/icesky1stm/wrktcp 直接下载,cd wrktcp-master && make,会生成wrktcp,就o ...