Else-If具有相同条件

时间:2014-03-17 20:31:53

标签: if-statement language-agnostic logic

if (Condition1)
{
    dothis;
}
else if (Condition1)
{
    dothat;
}

出于好奇,当我为else if调用相同的条件时,代码的dothat部分是否仍会在满足Condition1时执行?这是从编程语言到编程语言的不同吗?

5 个答案:

答案 0 :(得分:8)

你写的内容基本等同于

if(Condition1)
{
  dothis;
}
else
{
  if(Condition1)
  {
    dothat;
  }
}

所以不,它永远不会被召唤。

答案 1 :(得分:7)

不,第二个条件永远不会以任何语言执行。 Here is a basic flowchart of your logic

但是,如果Condition1在第一个条件中以某种方式评估为false而在第二个条件中评估为true,那么将调用第二个条件。例如:

<?php
$var = true;
function condition() {
    global $var;
    $var = !$var;
    return $var;
}

if(condition()) {
    echo "Conditional 1";
} elseif(condition()) {
    echo "Conditional 2";
}

在这种情况下,&#34;条件2&#34;将打印,因为condition()首先评估为false,然后为true。

答案 2 :(得分:1)

虽然最多只有一个分支在每个if-else-statement 执行 1 ,但在“条件”包含副作用的情况下,它可能并不总是执行的if分支。

例如,考虑this JavaScript code 带有“条件”表达式引入的副作用。

y = -1;
if (++y) {         // the "condition" is ++y
  alert("1")
} else if (++y) {
  alert("2")
}

只执行了一个分支(“2”),但在这两种情况下都使用了相同的“条件”。由于这些原因,在条件下产生副作用可能会有问题。


1 在所有现代主流语言中,if-else的条件都是“按需”和“按顺序”评估的。因此,执行条件评估为true的第一个分支,而不管其他副作用,并且它是 only 分支执行。

答案 3 :(得分:0)

第二个if跟随else - 因此,只有当第一个if 成功时才会执行。所以不行; dothat将不会被执行。所有(理智的)编程语言都是这样做的。

但是,某些编程语言具有else if的特殊构造,您必须将其编写为一个语句,不同地称为elifelsifElseIf,具体取决于关于语言。

答案 4 :(得分:0)

Condition1评估True if&#34; dothis&#34;将被调用并跳过else if。如果您想调用dothisdothat,那么您将拥有两个ifCondition1dothis语句,或者只放置dothatif在一个b = 2 if b == 2: print "Hello" elif b == 2: print "World" ... Hello 声明下。这就是我在我使用的计算机编程语言中看到的。

Python示例。

{{1}}