对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?

Posted

技术标签:

【中文标题】对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?【英文标题】:Are multiple 'if' statements and 'if-else-if' statements the same for mutually exclusive conditions?对于互斥条件,多个“if”语句和“if-else-if”语句是否相同? 【发布时间】:2015-07-08 20:06:49 【问题描述】:

编写多个if 语句和if-else-if 语句之间有什么区别吗?

当我尝试编写一个包含多个 if 语句的程序时,它没有给出预期的结果,但它与 if-else-if 一起工作。

条件是互斥的。

【问题讨论】:

除非条件是互斥的,否则是有区别的。 “当我尝试编写一个包含多个 'if ' 语句的程序时,它没有给出预期的结果。但是使用 'if else-if' 就可以了。”我想你只是自己回答了你的问题...... “If”语句存在于多种语言中,是编程的基础之一。这个网站是关于特定编程问题的问答,所以这样的讨论在这里过于广泛和离题。 您能否更具体地说明您注意到的差异?如果您只担心正确性而不是样式/性能等,请提及。这将帮助您防止您的问题被关闭。 【参考方案1】:

当您编写多个 if 语句时,可能会有多个 if 语句被评估为 true,因为这些语句是相互独立的。

当您编写单个 if else-if else-if ... else 语句时,只能将一个条件评估为真(一旦找到第一个评估为真的条件,则跳过下一个 else-if 条件) .

如果每个条件块从包含 if 语句的块中跳出(例如,通过从方法返回或从循环)。

例如:

public void foo (int x)

    if (x>7) 
        ...
        return;
    
    if (x>5) 
        ...
        return;
        

将具有与以下相同的行为:

public void foo (int x)

    if (x>7) 
        ...
    
    else if (x>5) 
        ...
    

但是如果没有 return 语句,当 x>5 和 x>7 都为真时,它会有不同的行为。

【讨论】:

【参考方案2】:

是的,这很重要:请参阅The if-then and if-then-else Statements。

此外,您可以轻松地对其进行测试。

代码 #1:

    int someValue = 10;

    if(someValue > 0)
        System.out.println("someValue > 0");
    

    if(someValue > 5)
        System.out.println("someValue > 5");
    

将输出:

someValue > 0
someValue > 5

而代码#2:

    int someValue = 10;

    if(someValue > 0)
        System.out.println("someValue > 0");
    else if(someValue > 5)
        System.out.println("someValue > 5");
    

只会输出:

someValue > 0

如您所见,代码 #2 永远不会进入第二个块,因为第一个语句 (someValue > 0) 的计算结果为 true

【讨论】:

【参考方案3】:

不,两者都不相同。 if 语句将检查所有条件。如果您将编写多个 if 语句,它将检查每个条件。 if else 将检查条件直到满足。一旦 if/else if 得到满足,它将超出该块。

【讨论】:

【参考方案4】:
if()

stmt..

else

stmt

if()

stmt

here compiler will check for both the if condition.

在下面的代码片段中,编译器将检查 if 条件,一旦第一个 if 条件为真,剩下的 if 条件将被绕过。

        if()

        
        else if
        

        
        else if
        

        
        else if
        

        

【讨论】:

以上是关于对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 中多个条件的 If-Else 语句

将“for”循环与 if-else 语句相结合,每个“if”语句中都有多个条件

优雅的替换if-else语句

优雅的替换if-else语句

java if语句

C零基础课程-12-if-else分支结构