使用if语句与逻辑运算符有什么好处?

时间:2013-09-19 09:03:39

标签: java c++ c

我知道 if语句可以多种方式使用,例如带有逻辑运算符的if语句, if ... else 嵌套如果陈述等。

使用&&,||等逻辑运算符时要确认很多条件,那么代码大小会比使用多个嵌套if语句时小。使用带有条件运算符的if语句是否有任何其他好处(运行时,调试,编译时益等)?

4 个答案:

答案 0 :(得分:2)

使用条件运算符与使用if语句没有性能优势。如果代码的两个版本是等价的,则没有理由期望JIT编译器不会生成具有相同性能的代码。

编译时性能问题无关紧要......与以毫秒为单位测量的(完整)构建时间相比,亚毫秒差异。

真正的区别在于可读性。有些计算可以使用条件表达式更简洁地表达,并且在某些情况下可以使代码更具可读性。可读性相关,因为会影响您和其他人调试和维护代码的能力。

然而,可读性取决于代码和读者的复杂程度。因此很难对使用“高级”结构的可读性效果进行概括。


您举一个例子:

if (condition 1) {
     if (condition 2) {
        if (Condition 3){
            statement 1;
        } else nothing;
     } else nothing;
  } else statement 3; 
     

if (condition 1 && condition 2 && condition 3) {
     statement 1;
  } else statement 2;

首先,&&运算符是逻辑运算符,而不是条件运算符。 (是的,它是一个短路运算符,但这不会改变它被称为逻辑运算符的事实!!)条件运算符是三元?运算符。< / p>

其次,尽管可读性论证(在大多数情况下)偏向于&&(和||),但仍然适用相同的论点。只有一个新手在阅读第二版代码时才会遇到问题。


  

我认为短路评估是除可读性之外的另一个重要原因。我们应该在这里结束吗?

事实上,这根本不是一个区别。 &&短路等同于您(可以)使用嵌套的if / else语句获得的短路。 (当您比较&&&逻辑运算符时,实际上会产生差异。)

答案 1 :(得分:0)

他们的正确名称是三级/三元运算符/语句。不,字节码/二进制代码应与“普通”if。

中的相同

答案 2 :(得分:0)

做出决定时需要考虑的一个功能是Short-circuit evaluation

这意味着当您对嵌套的if语句使用条件运算符时,如果第一个参数不足以确定表达式的值,则仅执行或计算第二个参数。

答案 3 :(得分:0)

我认为表现不会有任何好处。

从代码的角度来看,它会简化if-else块。但同样,如果您尝试使用三元运算符实现嵌套的if-else,它将变得复杂且难以维护。