if (Condition1)
{
dothis;
}
else if (Condition1)
{
dothat;
}
出于好奇,当我为else if
调用相同的条件时,代码的dothat
部分是否仍会在满足Condition1
时执行?这是从编程语言到编程语言的不同吗?
答案 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
的特殊构造,您必须将其编写为一个语句,不同地称为elif
,elsif
或ElseIf
,具体取决于关于语言。
答案 4 :(得分:0)
自Condition1
评估True
if
&#34; dothis&#34;将被调用并跳过else if
。如果您想调用dothis
和dothat
,那么您将拥有两个if
个Condition1
个dothis
语句,或者只放置dothat
和if
在一个b = 2
if b == 2:
print "Hello"
elif b == 2:
print "World"
...
Hello
声明下。这就是我在我使用的计算机编程语言中看到的。
Python示例。
{{1}}