我注意到在我与PHP & javascript的交易中,仍在学习btw,以下内容似乎产生了相同的结果。IF语句括号中的区别是什么?
if(($A==0) && ($B==0)){}
if($A==0 && $B==0){}
,这是什么编程适当的期限,所以我可以更多地了解它。
我注意到在我与PHP & javascript的交易中,仍在学习btw,以下内容似乎产生了相同的结果。IF语句括号中的区别是什么?
if(($A==0) && ($B==0)){}
if($A==0 && $B==0){}
,这是什么编程适当的期限,所以我可以更多地了解它。
括号确定进行比较的顺序。你举的例子是因为&&
首先评价了PHP,因为它一个非常简单的一个,并不需要在所有的括号,但看看像这样
if ($a == 0 || $b == 0 && $c == 0 || $dd == 0)
这实际上相当于
if ($a == 0 || ($b == 0 && $c == 0) || $dd == 0)
具有比||
更高的优先级
在大多数情况下,当你有复杂的条件时,你要确保使用括号,如果没有得到正确的操作顺序,那么至少要让代码清楚读者你正在尝试做什么。
很好的答案,我也不知道$$ ||的优先级,也非常感谢。 – Monty 2012-08-16 18:55:33
绝对同意,我们应该编写括号以提高可读性。 – martinstoeckli 2012-08-16 19:23:53
操作的顺序,如@asawyer说。
来源:http://en.wikipedia.org/wiki/Order_of_operations#Programming_languages
由于Operator Precedence规则,这两条线是相同的。
==
优先于&&
运营商。
额外的(不必要的)括号有时被用来作陈述清晰,或有时使用,因为作者不知道的优先级,或由于voodoo programming
为了让你的回答更好,我认为[短路](http://en.wikipedia.org/wiki/Short-circuit_evaluation)的提及也有助于未来的OP。 – 2012-08-16 19:10:26
Good call @Adam - 但我会把它留给你评论中的链接。 – 2012-08-16 21:48:25
在你的具体的例子是没有区别的,然而,有些情况下,这种情况会造成很大的变化。
例子:
if(a == 0 && (b == 0 || c == 0)) {
// do something
}
如果你注意到了,在这种情况下只有2个3个变量有邻为0
它被称为运算符优先级
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到底
与多个&&
和||
也称为and
和or
处理当托架被使用。这很像数学,如果你有方程2 + 4 * 2 = 10,这是因为你在加法之前做了乘法运算。其中as(2 + 4)* 2 = 12,因为括号使您可以添加。
所以简而言之,括号中的if操作具有最高的优先级。
我希望这能让你更清楚。祝你今天愉快。
您所看到的是基于操作顺序的额外括号。括号用于覆盖通常的顺序。举一个数学例子:
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。
如果您想同时检查两个条件,但通过使用两个不同的括号将它们分开,则您应该组合两个参数,检查if语句内每个循环的每个条件。
操作顺序 – asawyer 2012-08-16 18:39:26
WOW!你们真棒!感谢所有的答案! – Monty 2012-08-16 18:49:29
Upvotes for everyone! – Monty 2012-08-16 18:50:14