IF ELSE IF 到底算不算分支语句?
IF ELSE IF 到底算不算分支语句?
if...else if...语句有时被归类在判断语句中,那么它到底属不属于分支于句,它和分支语句有什么区别?
这是个好问题。之所以说它好,是因为它确实总在不经意中困扰着我们。虽然我们已经会使用它了,但是,它依然总是在无意间跳出来提醒我们,if...else if...到底是判断语句呢,还是分支语句?
好的,这里我就确切地告诉你,它既是判断语句,也是分支语句。因为,在形式上,它既做了判断,也存在分支。事实上,关于if...else if...究竟是判断语句还是分支语句,并不重要,重要的是你能真正的理解它、并擅长使用它。
实际上,它让我们产生困惑的原因,就是因为它的存在正好介于标准的判断语句和典型的分支语句之间,并且,拥有双方的共同特征。
前面回答的问题当中,我们已经详细介绍了判断语句语法特征和使用方法。有兴趣的同学可以公众号顶部查看《C#编程基础知识专辑》内容。
那么,今天呢,我们借这个问题,先介绍一下分支语句的语法特征和使用方法,回头我们再来分析,到底是什么东西在一直影响或困扰着我们?
通常,我习惯于把switch...case...语句成为标准的分支语句。下面我们来看看它的语法特征。
switch (obj)
{
case value1:
//当obj值为value1时,应该改执行的代码
break;
case value2:
//当obj值为value2时,应该改执行的代码
break;
case value3:
//当obj值为value3时,应该改执行的代码
break;
...
default:
//当obj值不为value1-3时,默认该改执行的代码
break;
}
语法特征:
1、switch括号中的obj对象,必须是一个有值的、可枚举的对象。
2、case语句数量不限。
3、case后面的对象,必须是一个常量,且与switch括号里的a对象具有相同的数据类型。
上面的语法,通俗的理解就是:我们需要通过判断一个对象obj的值究竟是什么,来决定程序接下来该选择执行哪一块代码。
下面,我们看一个简单的实例:
//创建变量a
int a = 3;
//根据目标对象的值,选择程序可执行的代码块
switch (a)
{
case 1:
Console.WriteLine("较小");
break;
case 2:
Console.WriteLine("一般");
break;
case 3:
Console.WriteLine("较大");
break;
default:
Console.WriteLine("未知");
break;
}
上面代码执行的结果是在屏幕上输出:3。
switch...case...就是所谓的典型的分支语句的特征,它集中关注一个特定对象的值,并且会因为它的值不同,而选择执行不同的代码块。
那么,到此,我们可以将它与if...else if ...语句进行比较,看看他们有什么相似和不同之处:
相似之处:
- 都存在分支代码块。
- 分支代码块的执行需要符合一定的条件。
- 都有默认执行代码块,If...else if...里是最后跟着的else{}语句,switch...case...是其中的default(默认)选项。
不同之处:
- l If...else if...的条件是不受限制的,每个分支代码允许完全不同的条件而成立;而switch...case...的分支条件只能针对特定的obj对象,简单说就是只关心obj的值,并由此决定分支的选择。
- l 形式上,If...else if...没有break语句,因为它只要遇到一个条件成立,就有直接执行了对应分支的代码,自然终止了后续代码的执行。而switch...case...遇到合适的条件,需要依赖break来终止后续代码的检查。
- l If...else if...最后的else默认选项是必须的,而switch...case...是其中的default(默认)选项则是可选的,这也意味着,switch...case...语句有可能不会执行其中的任何分支代码,除非至少有一个case的值与switch的参数是匹配的。
正因为,两者之间存在显著的不同,大多是时候的If...else if...语句的代码无法用switch...case...语句替代。但是,比较有意思的是,几乎所有的switch...case...语句的代码,都可以使用If...else if...语句来替代。
我们将前面的switch...case...语句的案例,修改为If...else if...语句,代码如下:
//创建变量a
int a = 3;
//多重条件判断,决定程序可执行的代码块
if (a == 1)
{
Console.WriteLine("较小");
}
else if (a == 2)
{
Console.WriteLine("一般");
}
else if (a == 3)
{
Console.WriteLine("较大");
}
else
{
Console.WriteLine("未知");
}
//这里最后一个else是必须的,并且它不再携带条件判断。
好了,通过以上的介绍和对比分析,相信你对If...else if...究竟是不是分支语句,已经不再感兴趣了。作为程序员,深入理解一个语法对象本身才是最重要的。
- 机器学习的基础讲解:神经网络
- 零基础学编程023:用with实现优雅地释放资源
- Start transaction not working with Revit 2014
- 零基础学编程034:解决一个pandas问题
- ShellExecute 启动外部程序 参数详细介绍
- 零基础学编程033:字符串的split拆分与join连接
- 零基础学编程032:生成二维码
- C#,一些非常简单但应该知道的知识点
- C#神奇的扩展方法
- 使用Python制作一个简单的刷博器
- 零基础学编程031:Python与其它语言最不同的一条语法规则
- dedecms批量导出新增文章url和标题
- 明理知意:复合索引优化及索引访问原理
- WCF配置文件与文件下载之坎坷路
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我没学过计算机,是怎么接了四个私活还挣了两个 iPad 的?
- Helm安装Prometheus Operator
- 【每日一题】【vue2源码学习】vue如何检测数组的变化
- JavaScript 实现输入框内容一键复制(附上 Vue 3 实现方式)
- python 迭代器/iterator与生成器/generator的区别
- CSS 实现文本超出容器范围用省略号显示(单行+多行)
- ESP8266和ROS收发消息读取模拟量控制LED亮度
- 纯 CSS 实现下拉菜单尖角图标(实心+空心)
- 3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧
- 解密 Docker 挂载文件,宿主机修改后容器里文件没有修改
- SAP Spartacus的单元测试目录结构
- 突击并发编程JUC系列-并发工具 CyclicBarrier
- 详解 | Linux系统是如何实现存储并读写文件的?
- Angular单元测试的一个错误消息
- Python进行特征提取