我在处理 PHP 和 javascript 时注意到,仍在学习 btw,以下似乎产生了相同的结果。
if( ( $A==0 ) && ( $B==0 ) ){}
if( $A==0 && $B==0 ){}
这在编程中的正确术语是什么,以便我可以了解更多信息。
我在处理 PHP 和 javascript 时注意到,仍在学习 btw,以下似乎产生了相同的结果。
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 中首先被评估,因为它的优先级高于||
在大多数情况下,当你有复杂的条件时,你要确保使用括号,如果不是为了得到正确的操作顺序,那么至少要让代码阅读器清楚你想要做什么。
正如@asawyer 所说,操作顺序。
来源:http ://en.wikipedia.org/wiki/Order_of_operations#Programming_languages
在您的具体示例中没有区别,但是,在某些情况下 paranthethis 会产生很大的不同。
例子:
if(a == 0 && (b == 0 || c == 0)) {
// do something
}
如果您注意到,在这种情况下,只有 3 个变量中的 2 个必须为 0
称为运算符优先级
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
您看到的是基于Order of Operations的额外括号。括号用于覆盖通常的顺序。举个数学例子:
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)
在某种程度上,这使代码看起来更干净,并保证首先评估比较。
括号在处理多个时使用&&
,||
也称为and
and or
。这很像数学,如果您有等式 2+4*2=10,这是因为您在加法之前进行了乘法运算。其中 (2+4)*2=12 因为括号让你做加法。
所以简而言之,括号在 if 操作中具有最高优先级。
我希望这会让你更清楚。祝你今天过得愉快。
如果您想同时检查两个条件,则应该组合这两个参数,但是通过使用两个不同的括号集将它们分开,您正在检查 if 语句中每个循环的每个条件。