我在与PHP和javascript打交道时注意到,顺便说一句,仍然在学习,以下似乎产生了相同的结果。
if( ( $A==0 ) && ( $B==0 ) ){}
if( $A==0 && $B==0 ){}
编程中的专有术语是什么,以便我可以了解更多信息。
括号确定进行比较的顺序。 你的例子很简单,根本不需要括号,但看看这样的东西
if ($a == 0 || $b == 0 && $c == 0 || $dd == 0)
这实际上相当于
if ($a == 0 || ($b == 0 && $c == 0) || $dd == 0)
因为&&
首先在 PHP 中进行评估,因为它的优先级高于||
在大多数情况下,当你有复杂的条件时,你要确保使用括号,如果不是为了获得正确的操作顺序,那么至少要让代码阅读者清楚你要做什么。
该术语称为运算符优先级。
http://php.net/manual/en/language.operators.precedence.php
由于运算符优先级规则,这两行是相同的。
==
优先于&&
运算符。
额外的(不必要的)括号有时用于使陈述更清晰,或者有时是因为作者不知道优先级,或者由于巫毒编程
操作顺序,正如@asawyer所说。
来源: http://en.wikipedia.org/wiki/Order_of_operations#Programming_languages
在您的特定示例中没有区别,但是,在某些情况下,paranthethis会产生很大的不同。
例:
if(a == 0 && (b == 0 || c == 0)) {
// do something
}
如果您注意到,在这种情况下,3 个变量中只有 2 个必须在 o 中为 0
您看到的是基于操作顺序的额外括号。 括号用于覆盖通常的顺序。 举一个数学例子:
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)
在某种程度上,这使得代码看起来更干净一些,并保证首先评估比较。
它被称为运算符优先级
if( ( $A==0 ) && ( $B==0 ) ){}
if( $A==0 && $B==0 ){}
在您的示例中,两行的计算结果相同。基本上括号中的内容首先得到处理。当您有以下情况时,可以更好地注意到这一点:
if( ( $A==0 && $C!= 1) && ( $B==0 || $D >0) ){}
在上面的例子中。首先评估( $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
处理多个&&
,||
也称为and
和or
。这很像数学,如果你有等式 2+4*2=10,这是因为你在加法之前做了乘法。其中为 (2+4)*2=12,因为括号让你做加法。
因此,简而言之,括号在 if 操作中具有最高的优先级。
我希望这能让你更清楚这一点。 祝你有美好的一天。
如果要同时检查这两个条件,则应组合这两个参数,但是通过使用两个不同的括号集来分隔它们,您将检查 if 语句内每个循环的每个条件。