【发布时间】:2018-04-02 08:39:39
【问题描述】:
在 PHP 中,为什么 false and (true && print('hi')) 的计算结果为 false 并且不打印 'hi'?我知道逻辑运算符在短路中求值(它们是惰性),但&& 和括号的upper precedence 比and 多,所以应该首先求值(true && print('hi'))。
有什么线索吗?谢谢!
【问题讨论】:
-
@CBroe 它不一样。他在考虑运算符优先级时询问它是否与“true”一起使用。
-
@tan 是的。问题“在&&(或
and,如此处)之后的条件是否总是得到评估” 回答为否false and something-something甚至没有得到任何进一步的关注必要的。运算符优先级确实意味着运算符对表达式的结果的影响,不一定是各个子表达式的评估顺序。 -
不知道为什么会出现这些假设性问题,如果我在为一家公司工作时编写此代码,我预计会被踢出局,而不是在 SO 上投票。
-
@CBroe 我一遍又一遍地阅读以理解和消化这一行“运算符优先级确实意味着运算符对表达式结果的影响,不一定是各个子表达式的评估顺序”老学校的错误。感谢 CBroe 和 Ricardo Pérez López
-
@NigelRen 因为人们想学习???
标签: php logical-operators short-circuiting