if可以检查多少个条件

Posted

技术标签:

【中文标题】if可以检查多少个条件【英文标题】:How many conditions can an if check for 【发布时间】:2015-04-26 07:42:43 【问题描述】:

if 可以检查多少个条件? 例如,

if(a==1 && b==1 && c==1 && ... && n==1)

我知道这可能可以简单地通过嵌套 if 来解决,然后嵌套多少就不是问题了。但坦率地说,我很好奇,似乎无法找到需要多少。

另外,反正我有你的注意,效率上是不是有区别

if(a==1 && b ==1)

if(a==1)
    if(b==1)

【问题讨论】:

每个问题只问一个问题。 从技术上讲,if 中只评估了 1 个条件,实际上发生的是 1 个条件被评估,其结果被下一个评估,依此类推...... 1) 没有限制。 2) 两者都是一样的 布尔表达式的长度没有定义的限制;您可能会在某个时候遇到内存问题。关于第二个问题,请参阅:***.com/questions/5259938/… @Poldie 我很抱歉,但基本上我想看看是否有任何相对于任一选项的优点,因为它通常是嵌套的 if,而不是条件字符串。 【参考方案1】:

if 中的条件语句的数量没有限制。 此外,这两个块中的任何一个都没有性能改进。

两者之间最大的区别是您无法控制第一个条件失败的条件。

例子:

if(a==1 && b==1) 
    //do something
 else 
    //no way to tell which one failed without checking again!

另一个:

if(a==1) 
    if(b==1) 
        //do something
     else 
        // 'b' failed (meaning: b is not equal to 1)
    
 else 
    // 'a' failed

【讨论】:

【参考方案2】:

据我所知,没有明确的限制。实际限制是当可读性成为问题时。

实际的代码限制可能是由于 Java 方法只能包含大约 64 KiB 的字节码。

最后两个代码块做同样的事情(假设它们后面只有一个代码块或语句)。只有在涉及else 时,它们才会有所不同。

【讨论】:

【参考方案3】:

我不确定if 子句中语句的数量,但两种语法之间的性能是相同的。无论您使用什么语法,编译器都会生成相同的字节码。

【讨论】:

如果您在您的帖子中证明两段代码的生成字节码也是相同的,那就更好了。【参考方案4】:

java if 语句可以只测试一个条件:

if ( 布尔表达式 ) 语句 [ else 声明 ]

您示例中的a==1 && b==1 && c==1 && ... && n==1一个 布尔表达式,正如其他人已经告诉您的那样,布尔表达式的复杂程度没有硬性限制。

【讨论】:

以上是关于if可以检查多少个条件的主要内容,如果未能解决你的问题,请参考以下文章

Bash条件混合函数返回值和条件检查[重复]

如何检查突出显示文本的 if else 条件?

检查存在多少个正则表达式匹配组,然后使用它们

如何检查Java中的句子中有多少个辅音和元音?

如何检查查询中是否有任何结果并添加if / else条件

Python是不是检查多条件if语句中的所有条件? [复制]