如果你有这样的代码:
if (A > X && B > Y)
{
Action1();
}
else if(A > X || B > Y)
{
Action2();
}
对于 A > X
和 B > Y
,if-else-if
阶梯的两部分是否都将执行?
我正在处理存在此问题的 Java 代码。我通常使用 C++ 工作,但在这两种语言中我都是一个非常新的(和零星的)程序员。
最佳答案
不,它们不会同时执行。它按照您编写它们的顺序进行,从逻辑上讲这是有道理的;即使第二个读作“else if”,您仍然可以将其视为“else”。
考虑一个典型的 if/else block :
if(true){
// Blah
} else{
// Blah blah
}
如果您的第一个陈述是正确的,您甚至不必费心查看在 else 情况下需要做什么,因为它是无关紧要的。同样,如果您有“if/elseif”,您就不会浪费时间查看后续 block ,因为第一个 block 为真。
一个现实世界的例子可能是分配成绩。你可以尝试这样的事情:
if(grade > 90){
// Student gets A
} else if(grade > 80){
// Student gets B
} else if(grade > 70){
// Student gets c
}
如果学生得到 99%,则所有这些条件都为真。但是,您不会分配学生 A、B 和 C。
这就是为什么顺序很重要。如果我执行此代码,并将 B block 放在 A block 之前,您将为同一名学生分配 B 而不是 A,因为 A block 不会被执行。
关于java - 条件语句在 if-else-if 阶梯的两个部分都为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26550990/