# 【知识精讲】如果之后的如果
## Part1
在我们之前的课程中间,我们已经见到过了 `if…else…` 这种形式的条件语句的使用,它根据不同的情况执行不同的代码块,并且执行 `if` 后代码块的条件和执行 `else` 后代码块的条件是完全互斥的。
那么,如果我们遇到不互斥,但是又需要分支考虑的情况时,我们应该如何去运用 `if ... else ...`的语句呢?
## Part2
举个例子来说,假设我们在 `if` 中的条件是 `x > 5`,也就是说,当 `x` 大于 555 的时候,`if` 条件后的语句块会被执行;而如果我们直接在之后使用 `else` ,那么 `else` 内语句块被执行的条件将是 `x` 小于等于 555 。可是,如果我们希望有一个语句块在 `x` 小于等于 555 但是大于 333 的时候执行,我们应该怎么办呢?
并不是很难噢,其实只要进行一层“嵌套”就可以了。对于原来的代码:
~~~
if (x > 5) {
// 当 x 大于 5 时执行
}
else {
// 当 x 小于等于 5 时执行
}
~~~
我们需要在 `else` (也就是 `x` 小于等于 555 时)中再添加一个对于“大于 333”的约束。这时候我们只要在 `else` 的语句中再加上一个 `if` ,并在条件里面写上`(x > 3)`就可以啦:
~~~
if (x > 5) {
// 当 x 大于 5 时执行
}
else {
if (x > 3) {
// 当 x 小于等于 5 且大于 3 时执行
}
}
~~~
由于上面的这种写法的 `else` 中只有 `if` 一个条件约束和与它相关联的语句块,我们可以将 `if` 简写在 `else` 的后面,缩略成这样的结果:
```
if (x > 5) {
// 当 x 大于 5 时执行
}
else if (x > 3) {
// 当 x 小于等于 5 且大于 3 时执行
}
```
类似地,如果我们把嵌套在 `else` 内的 `if` 条件下也加上一个 `else`,我们将得到:
~~~
if (x > 5) {
// 当 x 大于 5 时执行
}
else {
if (x > 3) {
// 当 x 小于等于 5 且大于 3 时执行
}
else {
// 当 x 小于等于 3 时执行
}
}
~~~
相应地,也可以被缩略成:
~~~
if (x > 5) {
// 当 x 大于 5 时执行
}
else if (x > 3) {
// 当 x 小于等于 5 且大于 3 时执行
}
else {
// 当 x 小于等于 3 时执行
}
~~~
类似的,如果我们逐层的嵌套,我们还可能得到类似于下面这样的复杂情况:
~~~
if (x > 5) {
// 当 x 大于 5 时执行
}
else {
if (x > 3) {
// 当 x 小于等于 5 且大于 3 时执行
}
else {
if (x > 1) {
// 当 x 小于等于 3 且大于 1 时执行
}
else {
// 当 x 小于等于 1 时执行
}
}
}
~~~
相应的,我们逐层缩略,将得到如下的结果:
~~~
if (x > 5) {
// 当 x 大于 5 时执行
}
else if (x > 3) {
// 当 x 小于等于 5 且大于 3 时执行
}
else if (x > 1) {
// 当 x 小于等于 3 且大于 1 时执行
}
else {
// 当 x 小于等于 1 时执行
}
~~~
你有没有从中发现一些规律呢,其实你可以通过嵌套 `if` 和 `else` 这种分支结构,实现对于复杂的逻辑分支的控制,而这就正是我最喜欢的啦。
[![Clipboard Image.png](http://res.jisuanke.com/img/upload/20160220/17f7a22e49348c233229db3f218b98d7147212cb.png)](http://res.jisuanke.com/img/upload/20160220/17f7a22e49348c233229db3f218b98d7147212cb.png)
要注意噢,我们的 C++ 语言中,只有 `if ... else ...` 是一个分支结构的单元。请不要把`if ... else if ... else` 理解成一个分支结构的单元,这种容易造成误解的写法其实是多个分支结构嵌套后的缩略。
接下来,让我们把这种分支结构的嵌套运用到我们自己的程序中吧。
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》