c++ - 何时使用 else if 而不是 if?
问题描述
假设我们有这样的代码:
if (condition_1)
do this
if (condition_2)
do that
else
do blablabla
现在这个:
if (condition_1)
do this
else if (condition_2)
do that
else
do blablabla
现在让我们逐行检查发生了什么。如果我没记错的话,第一个程序开始检查条件_1 是真还是假,那么条件_2 也会发生同样的事情。如果这些条件都不成立,程序就会运行“do blablabla”。
第二个程序从检查condition_1 开始,如果它为假,则检查condition_2。如果 condition_2 如果为假,则 if 什么都不做(我的意思是它忽略 else 语句)。如果是这样,第二个程序中的第二个 if 语句可以替换为:
if (!(condition_1) and condition_2)
do that
但是 else then 可以运行,我认为每个 else if 语句都可以替换为只有 if 条件更长一些。那么这是否可以通过仅使用 if 来替换其他所有内容?“do blablabla”什么时候播出?
解决方案
第一部分:
if (condition_1)
do this
// previous if has nothing to do with this if & else
if (condition_2)
do that
else
do blablabla
这种情况如果condition_2
为真do that
则将被执行,否则do blablabla
将被执行..
现在是第二部分:
if (condition_1)
do this
else if (condition_2)
do that
else
do blablabla
在这里,第一个真正的条件将被执行,其余的else if
&else
将被忽略,所有的条件将被依次检查直到else
或true
找到一个条件。如果没有条件成立,那么else
将被执行。如果这两个条件都满足,那么do blablabla
将执行false
最后,是的 secondif
可以替换为:
if (!(condition_1) and condition_2)
do that
这是因为第二个 if 将被检查(do that
将被执行)只有当condition_1
is false.. 并且condition_2
为 true 时。
这相当于:(当且仅当condition_1
is false
)
if (!(false) and condition_2)
do that
你可以通过检查之前的条件是否为假来替换 else if
,这样每个else if
s 都有之前的条件,这很乏味。
例子:
if (a) {
// do task1
} else if (b) {
// do task2
} else if (c) {
// do task3
} else {
// do task4
}
相当于:
if (a) {
// do task1
}
if (!a and b) {
// do task2
}
if (!a and !b and c) {
// do task3
}
if (!a and !b and !c) {
// here is the else
// do task4
}
何时使用 else if 而不是 if?
一般来说,我们链接if
,else if 和 an else
at the last 以确保仅执行一个条件,如果一个是true
rest 将被忽略并且执行转到 last 的最后一行 ( }
) 的下一个else
。
推荐阅读
- ruby-on-rails - Ruby on rails“未定义的方法”错误
- javascript - 反应JS。如何在 React 中通过 ref 获取 ClassList 和其他 DIV 道具
- php - 如何将模态文本输入的值发送到另一个页面?
- python - Facebook 将不正确的数据传递到数据库
- angular - 尝试使用 REST 服务时,离子屏幕变为空白
- webpack - 更改 Vue 构建 dist 文件前缀
- node.js - 无法使用 WebSocket 连接到 node.js 检查器
- windows - 我的静音麦克风脚本不起作用,需要想法和答案
- css - 无法通过 Symfony 项目中的 css 内容属性设置 png 图像
- angular - 页面加载时,角度值更改多次调用