2012-08-16 42 views
1

我注意到在我与PHP & javascript的交易中,仍在学习btw,以下内容似乎产生了相同的结果。IF语句括号中的区别是什么?

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

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

,这是什么编程适当的期限,所以我可以更多地了解它。

+2

操作顺序 – asawyer 2012-08-16 18:39:26

+0

WOW!你们真棒!感谢所有的答案! – Monty 2012-08-16 18:49:29

+0

Upvotes for everyone! – Monty 2012-08-16 18:50:14

回答

7

括号确定进行比较的顺序。你举的例子是因为&&首先评价了PHP,因为它一个非常简单的一个,并不需要在所有的括号,但看看像这样

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

这实际上相当于

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

具有比||更高的优先级

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

+0

很好的答案,我也不知道$$ ||的优先级,也非常感谢。 – Monty 2012-08-16 18:55:33

+0

绝对同意,我们应该编写括号以提高可读性。 – martinstoeckli 2012-08-16 19:23:53

5

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

==优先于&&运营商。

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

+0

为了让你的回答更好,我认为[短路](http://en.wikipedia.org/wiki/Short-circuit_evaluation)的提及也有助于未来的OP。 – 2012-08-16 19:10:26

+0

Good call @Adam - 但我会把它留给你评论中的链接。 – 2012-08-16 21:48:25

3

在你的具体的例子是没有区别的,然而,有些情况下,这种情况会造成很大的变化。

例子:

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

如果你注意到了,在这种情况下只有2个3个变量有邻为0

2

它被称为运算符优先级

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

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

在你示例两条线评估相同。

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

在上面的例子:基本的东西在括号中得到处理first.This可当你有类似发现更好。首先评估内部的($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到底

1

与多个&&||也称为andor处理当托架被使用。这很像数学,如果你有方程2 + 4 * 2 = 10,这是因为你在加法之前做了乘法运算。其中as(2 + 4)* 2 = 12,因为括号使您可以添加。

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

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

2

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

7 + 2 * 4 + 3 

首先必须2 * 4评估为8,赠送:

7 + 8 + 3 

乘法比另外一个更高的优先级,所以它首先计算。您可以通过使用括号重写:

(7 + 2) * 4 + 3 

在这种情况下,要evauluated第一操作是增加了,赠送:

9 * 4 + 3 

同样的原理是在逐位,布尔效果以及if声明中的比较运算符。比较运算比布尔运算符的优先级高,所以如果你有,例如:

1 == 4 || 7 > 3 

的比较是先进行计算,从而

false || true 

很多程序员用于编程“安全”,通过把括号围绕比较:

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

在某种程度上,这使得代码看起来有点清洁,保证了比较,将在评估网络RST。

0

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

相关问题