【发布时间】:2020-02-29 18:52:21
【问题描述】:
假设我们有这样的代码:
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 语句都可以替换为 only if 条件更长一些。那么这是否可以通过仅使用 if 来替换其他所有内容? “do blablabla”什么时候播出?
【问题讨论】:
-
如果
condition_1和condition_2都不成立,则第二个片段确实运行do blablabla。 -
您对示例的解释是错误的。在您的第一个示例中,如果
condition_1 == true和condition_2 == false,this和blablabla都将被执行。 -
是的,具有
if但没有else的编程语言仍然是图灵完备的——只是可读性较差。原则上确实可以将任何 C++ 程序转换为不使用else的等效程序。 -
当你需要
else你会知道的。 -
我也认为 OP 想太多了。如果逻辑需要
else if,则使用else if。
标签: c++ if-statement