switch/case/default中的雷区
switch的语法如下:
switch(表达式){
case常量表达式1: 语句1;break;
case常量表达式2: 语句2;break;
…
case常量表达式n: 语句n;break;
default: 语句n+1;break;
}
其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,
当表达式的值与某个常量表达式的值相等时,即执行其后的语句,
然后不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
但是很多日常开发时,对语法不是很清晰,将default放在了case中间甚至放在了第一个。
首先这种写法从代码的语义上就不是很合理再加上这种写法极其容易引起错误。
如果defualt后面还有case,且default块中没有使用break,那么程序任然继续匹配后面的case,极其容易引起错误。
default代表的是没有任务case匹配的情况下的默认处理方式,一般在条件匹配中,都是所有条件匹配结束后都未命中时,作为一种默认处理方式,为了语义清晰和逻辑正确性,建议放在最后!
switch/case/default中的雷区的更多相关文章
- switch case语句中能否作用在String,long上
在之前的eclipse中使用switch的case语句时是只能为(byte,short,char)int类型或枚举类型.但在jdk1.7以后 在case语句中是可以使用String 以及long 等类 ...
- java中的switch case default break
package com.didispace; /** * Created by gmq on 2017/08/07. * * @version 1.0 * @since 2017/08/07 10:4 ...
- switch case default 的使用
switch_case从页面输入五个同学的成绩,求出平均成绩,如果大于等于90为优秀,小于90大于等于80为良好,小于80大于等于70为一般,小于70大于等于60为较差,小于60为很差 SWITCH语 ...
- C#中,switch case语句中多个值匹配一个代码块的写法
switch (num) { case 1: Response.Write("1"); break; case 2: case 3: Response.Write("2| ...
- Switch Case语句中多个值匹配同一个代码块的写法
switch ($p) { case 'home': case '': $current_home = 'current'; break; case 'users.online': case 'use ...
- switch...case... 语句中的类型转换
switch语句对case表达式的结果类型有如下要求: 要求case表达式的结果能转换为switch表示式结果的类型 并且如果switch或case表达式的是无类型的常量时,会被自动转换为此种常量的默 ...
- 为什么说在使用多条件判断时switch case语句比if语句效率高?
在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...
- J S 脚本语言 if() { if { } else { } } var a =100; switch { case ( ) break ; } 基础详解 , 最下面有例子
注释语法 注释语法// 多行注释/ JS输出语句 JS样式尽量靠最下面写 <script type="text/javascript">//嵌入JS开始代码 //ale ...
- c语言中的switch case语句
switch--case语句中,switch后面跟一个变量,这个变量不可以是字符数组,字符指针,字符串数组,浮点型(实型).它可以是整型,字符型(在本质上也是整型).所以这导致case后面的常量表达式 ...
随机推荐
- 一、Hadoop入门概述
一.Hadoop是什么 Hadoop是一个由Apche基金会所开发的分布式系统基础架构. 主要解决海量数据的存储和海量数据的分析计算问题. 广义上来说,Hadoop通常是指一个更广泛的概念—Hadoo ...
- Node.js官方文档:到底什么是阻塞(Blocking)与非阻塞(Non-Blocking)?
译者按: Node.js文档阅读系列之一. 原文: Overview of Blocking vs Non-Blocking 译者: Fundebug 为了保证可读性,本文采用意译而非直译. 这篇博客 ...
- 分布式CAP定理
根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),最 ...
- go安装配置
https://www.cnblogs.com/wt645631686/p/8124626.html Win10下安装Go开发环境 关于Go语言有多么值得学习,这里就不做介绍了,既然看了这篇文章, ...
- pyTorch 基于以resnet50为backbone的PSPNet 训练VOC2012数据集
代码链接:https://github.com/ggyyzm/pytorch_segmentation 使用PSPNet作为主干分类网络 1.将VOC2012数据集下载并解压到data/VOCtrai ...
- DDL(数据库定义语言)(五)
一.数据定义语言(Data Definition Language)的基本操作 定义数据库.表等,包括CREATE语句.ALTER语句.DROP语句.CREATE语句用于创建数据库.数据表等,ALTE ...
- Websocket --socket.io的用法
<!DOCTYPE html> <html> <head> <title>Hello WebSocket</title> <link ...
- AjAX 异步通信
<!DOCTYPE html> <html lang="en"> <head> <title>xmlhttprequest ajax ...
- Chrome插件中 popup,background,contentscript消息传递机制
https://blog.csdn.net/summerxiachen/article/details/78698878 popup不能接收到contentscript 发送的消息, 如果这时cont ...
- qt ubutun各个版本下载地址
http://download.qt.io/archive/qt/ http://mirrors.melbourne.co.uk/ubuntu-releases/