IF语句中括号中的差异是什么?

时间:2012-08-16 18:37:49

标签: php javascript

我在与PHP&的交易中注意到了javascript,还在学习btw,以下似乎会产生相同的结果。

        if( ( $A==0 ) && ( $B==0 ) ){}

        if( $A==0 && $B==0 ){}

编程中适当的术语是什么,所以我可以了解更多相关信息。

9 个答案:

答案 0 :(得分:7)

括号确定进行比较的顺序。你的例子很简单,根本不需要括号,但看看像这样的东西

if ($a == 0 || $b == 0 && $c == 0 || $dd == 0)

这实际上相当于

if ($a == 0 || ($b == 0 && $c == 0) || $dd == 0)

因为&&首先在PHP中进行评估,因为它的优先级高于||

在大多数情况下,当你有复杂的条件时,你想确保使用括号,如果不是为了使操作顺序正确,那么至少要向代码阅读器说明你想要做什么。

答案 1 :(得分:5)

该术语称为运算符优先级。

http://php.net/manual/en/language.operators.precedence.php

答案 2 :(得分:5)

由于 Operator Precedence 规则,这两行是相同的。

==优先于&&运算符。

额外(不必要的)括号有时用于使语句更清晰,或者有时用于因为作者不知道优先级,或者由于 voodoo programming

答案 3 :(得分:4)

运营顺序,正如@asawyer所说。

来源:http://en.wikipedia.org/wiki/Order_of_operations#Programming_languages

答案 4 :(得分:3)

在你的具体例子中没有区别,但是,有些情况下paranthethis会产生很大的不同。

示例:

if(a == 0 && (b == 0 || c == 0)) {
    // do something
}

如果您注意到,在这种情况下,3个变量中只有2个必须为0

答案 5 :(得分:2)

它被称为运算符优先级

if( ( $A==0 ) && ( $B==0 ) ){}

if( $A==0 && $B==0 ){}

在您的示例中,两行都评估相同。基本上,括号中的内容首先被处理。当你有类似的东西时,可以更好地注意到这一点:

 if( ( $A==0  && $C!= 1) && ( $B==0 || $D >0) ){}

在上面的例子中。首先评估内{/ strong> ( $A==0 && $C!= 1)( $B==0 || $D >0)条件,然后根据主&&符号评估结果。

假设:

( $A==0  && $C!= 1) evaluated to TRUE

( $B==0 || $D >0) evaluated to FALSE

条件

if( ( $A==0  && $C!= 1) && ( $B==0 || $D >0) ){}

变为

if( ( TRUE) && ( FALSE) ){}

最终自然地评估为FALSE

答案 6 :(得分:2)

您看到的是基于操作顺序的额外括号。括号用于覆盖通常的顺序。举一个数学例子:

7 + 2 * 4 + 3

首先将2 * 4评估为8,给出:

7 + 8 + 3

乘法具有比加法更高的优先级,因此首先对其进行求值。您可以使用括号覆盖它:

(7 + 2) * 4 + 3

在这种情况下,要引发的第一个操作是添加,给出:

9 * 4 + 3

同样的原则对if语句中的逐位,布尔和比较运算符有效。比较操作具有比布尔运算符更高的优先级,因此如果您有,例如:

1 == 4 || 7 > 3

首先评估比较,给出

false || true

许多程序员习惯于通过在比较中加上括号来“安全地”编程:

(1 == 4) || (7 > 3)

在某种程度上,这使代码看起来更清晰,并保证首先评估比较。

答案 7 :(得分:1)

在处理多个&&||时也会使用括号,也称为andor。这很像数学,如果你有等式2 + 4 * 2 = 10这是因为你在加法之前进行乘法运算。其中,(2 + 4)* 2 = 12因为括号使你做了添加。

因此简而言之,括号在if操作中具有最高优先级。

我希望能让你更清楚。祝你今天愉快。

答案 8 :(得分:0)

如果要同时检查两个条件,则应该组合这两个参数,但是通过使用两个不同的括号集来分隔它们,您将检查if语句中每个循环的每个条件。