我在与PHP&的交易中注意到了javascript,还在学习btw,以下似乎会产生相同的结果。
if( ( $A==0 ) && ( $B==0 ) ){}
if( $A==0 && $B==0 ){}
编程中适当的术语是什么,所以我可以了解更多相关信息。
答案 0 :(得分:7)
括号确定进行比较的顺序。你的例子很简单,根本不需要括号,但看看像这样的东西
if ($a == 0 || $b == 0 && $c == 0 || $dd == 0)
这实际上相当于
if ($a == 0 || ($b == 0 && $c == 0) || $dd == 0)
因为&&
首先在PHP中进行评估,因为它的优先级高于||
在大多数情况下,当你有复杂的条件时,你想确保使用括号,如果不是为了使操作顺序正确,那么至少要向代码阅读器说明你想要做什么。
答案 1 :(得分:5)
答案 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)
在处理多个&&
和||
时也会使用括号,也称为and
和or
。这很像数学,如果你有等式2 + 4 * 2 = 10这是因为你在加法之前进行乘法运算。其中,(2 + 4)* 2 = 12因为括号使你做了添加。
因此简而言之,括号在if操作中具有最高优先级。
我希望能让你更清楚。祝你今天愉快。
答案 8 :(得分:0)
如果要同时检查两个条件,则应该组合这两个参数,但是通过使用两个不同的括号集来分隔它们,您将检查if语句中每个循环的每个条件。