企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 【知识精讲】如果之后的如果 ## 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` 理解成一个分支结构的单元,这种容易造成误解的写法其实是多个分支结构嵌套后的缩略。 接下来,让我们把这种分支结构的嵌套运用到我们自己的程序中吧。