从这两个示例中,我认为运算符优先级是有意义的:
$a = false;
$b = true;
$c = $a || $b;
此处$ c是 true
$a = false;
$b = true;
$c = $a or $b;
此处$ c为 false
我了解其背后的原因。但是,以下内容:
$a = false;
$b = true;
return $a or $b;
返回true,这使我感到困惑。
这是什么原因?
答案 0 :(得分:4)
or
的优先级低于=
,因此:
$c = $a or $b;
成为这个:
($c = $a) or $b;
但这没有意义:
(return $a) or $b;
所以您得到了:
return ($a or $b);
答案 1 :(得分:3)
在表达式中,运算符优先级适用。 =
,||
和or
都是运算符,$c = $a or $b
是一个表达式。并且根据运算符优先级,其结果为($c = $a) or $b
。
但是,return
是声明。 return
不是运算符,也不按运算符优先级分组。它的总值为return <expression>
,因此始终为return ($a or $b)
。
表达式 $c = $a or $b
的结果为true
BTW。在表达式的过程中,$c
被分配了false
,但是表达式整体返回值true
($b
)。因此,即使这样return true
:
return $c = $a or $b;