1

我在处理 PHP 和 javascript 时注意到,仍在学习 btw,以下似乎产生了相同的结果。

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

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

这在编程中的正确术语是什么,以便我可以了解更多信息。

4

9 回答 9

7

括号确定进行比较的顺序。您的示例是一个非常简单的示例,根本不需要括号,但是请看类似这样的示例

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

这实际上相当于

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

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

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

于 2012-08-16T18:48:03.313 回答
5

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

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

于 2012-08-16T18:40:54.957 回答
5

由于运算符优先级规则,这两行是相同的。

==优先于运算&&符。

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

于 2012-08-16T18:43:15.237 回答
4

正如@asawyer 所说,操作顺序。

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

于 2012-08-16T18:41:12.033 回答
4

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

例子:

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

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

于 2012-08-16T18:44:40.163 回答
2

称为运算符优先级

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

于 2012-08-16T18:46:41.077 回答
2

您看到的是基于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)

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

于 2012-08-16T18:48:12.543 回答
1

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

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

我希望这会让你更清楚。祝你今天过得愉快。

于 2012-08-16T18:46:44.137 回答
0

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

于 2015-01-21T18:40:22.543 回答